powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Зарегистрировать .DLL
6 сообщений из 6, страница 1 из 1
Зарегистрировать .DLL
    #36499584
ping_09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
В своём приложении использую gif89.dll.
При переносе на ПК пользователя приложение не работает,
т.к. gif89.dll не зарегистрирована в системе.
Знаю,что инсталлятор InstallShield может помочь обойти эту проблему.
Также можно использовать утилиту regsvr32.exe
А существуют какие-то другие решения?
Допустим производить регистрацию из стартового .prg,но
пользователь может и не обладать правами Администратора.
...
Рейтинг: 0 / 0
Зарегистрировать .DLL
    #36500259
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ping_09Здравствуйте.
В своём приложении использую gif89.dll.
При переносе на ПК пользователя приложение не работает,
т.к. gif89.dll не зарегистрирована в системе.
Знаю,что инсталлятор InstallShield может помочь обойти эту проблему.
Также можно использовать утилиту regsvr32.exe
А существуют какие-то другие решения?
Допустим производить регистрацию из стартового .prg,но
пользователь может и не обладать правами Администратора.

Можно сделать файл c расширением bat и прописать в него как то так:
move /y C:\NEDOIMKA\vfp9r.dll C:\WINDOWS\system32\
regsvr32 /s vfp9r.dll

Первая строка - перемещение библиотеки в system32
Вторая - регистрация в системе
...
Рейтинг: 0 / 0
Зарегистрировать .DLL
    #36501428
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторping_09Здравствуйте.
В своём приложении использую gif89.dll.
При переносе на ПК пользователя приложение не работает,
т.к. gif89.dll не зарегистрирована в системе.
Знаю,что инсталлятор InstallShield может помочь обойти эту проблему.
Также можно использовать утилиту regsvr32.exe
А существуют какие-то другие решения?
Допустим производить регистрацию из стартового .prg,но
пользователь может и не обладать правами Администратора.

Можно сделать файл c расширением bat и прописать в него как то так:
move /y C:\NEDOIMKA\vfp9r.dll C:\WINDOWS\system32\
regsvr32 /s vfp9r.dll

Первая строка - перемещение библиотеки в system32
Вторая - регистрация в системе

так не нужно делать!
в win 7 Вы столкнетесь с проблемами.
Устанавливать софт должен админ,
либо пользователь с правами лок.администратора.
Примите это за должное и не пытайтесь что-то изменить.
...
Рейтинг: 0 / 0
Зарегистрировать .DLL
    #36501490
если известно имя класса, то можно где-нибудь при запуске программы сделать проверку на его регистрацию и если он не зарегистрировать, то зарегистрировать...

тут где-то рядом есть темка про внешнюю dll, которая позволяет печатать двумерный штрих-код, вот на ней и покажу

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
*-где-нибудь при запуске программы делаем такую проверку
*-в случае, если dll-ка не зарегистрирована, то функция OLE_APP() вернёт пустую строку
*-а если зарегистрирована, то будет возвращён путь к этой dll-ки
IF EMPTY(ALLTRIM(OLE_APP("Addin.PDF417")))
     LOCAL llRegistered
     *-регистрируем dll
     cFileDll = "c:\PDF417.dll"
     llRegistered = RegisterControl(cFileDll)
     IF llRegistered = .F.
        *-здесь конечно можно было бы вывести какоенить сообщение	
     ENDIF
ENDIF

ну и где-нибудь объявляем следующие функции

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
PROCEDURE OLE_APP
LPARAMETER cClassName
*!* Параметр название класса
cClID = fregget('',cClassName+'\CLSID', 1 )
cFilePath = fregget('','CLSID\'+ALLTRIM(cClID)+'\InProcServer32', 1 )
IF EMPTY(cFilePath)
	cFilePath = fregget('','CLSID\'+ALLTRIM(cClID)+'\LocalServer32', 1 )
ENDIF
*!* Если такой класс зарегистрирован- возвращается путь к файлу, иначе пустая
*строка.
RETURN ALLTRIM(cFilePath)

*!* Это общая функция чтения данных из реестра 
FUNCTION fregget
LPARAMETER name, key, div
*!*	 name имя параметра,значение которого надо получить
*!*	 key полное имя раздела реестра
*!*	 div базовый ключ реестра
*!*	div= 1  	HKEY_CLASSES_ROOT           - 2147483648   
*!*	div= 2 	HKEY_CURRENT_USER           - 2147483647   
*!*	div= 3 	HKEY_LOCAL_MACHINE          - 2147483646   
*!*	div= 4 	HKEY_USERS                  - 2147483645   
DECLARE INTEGER RegOpenKey IN Win32API INTEGER, STRING @, INTEGER @
DECLARE INTEGER RegCloseKey IN Win32API INTEGER
DECLARE INTEGER RegQueryValueEx IN Win32API INTEGER, STRING, INTEGER, INTEGER @, STRING @,INTEGER @

PRIVATE keyhandle, data, datalen, path
IF LEFT(M.key,  1 )='\'
	M.path = SUBSTR(M.key,  2 )
ELSE
    M.path = M.key
ENDIF

IF PARA()= 2 
	M.div=- 2147483646  
ELSE
	DO CASE
		CASE div= 1 
			M.div=- 2147483648  
		CASE div= 2 
			M.div=- 2147483647 
		CASE div= 3 
			M.div=- 2147483646 
		CASE div= 4 
			M.div=- 2147483645 
		OTHERWISE
			M.div=- 2147483646  
	ENDCASE
ENDIF

keyhandle =  0 
data = SPACE( 256 )
datalen = LEN(M.data)
type =  0 
= regopenkey(M.div,M.path,@M.keyhandle)
= regqueryvalueex(M.keyhandle,M.name, 0 ,@M.type,@M.data,@M.datalen)
= regclosekey(M.keyhandle)
DO CASE
	CASE M.type= 1 
		IF M.datalen < AT(CHR( 0 ), M.data)- 1 
        	M.data = LEFT(M.data, M.datalen)
        ELSE
            M.data = LEFT(M.data, AT(CHR( 0 ), M.data)- 1 )
        ENDIF
      CASE M.type= 4 
        nn =  0 
        FOR n = M.datalen TO  1  STEP - 1 
        	nn = nn+ASC(SUBSTR(M.data, n, 1 ))*( 256 ^(n- 1 ))
        ENDFOR
        M.data = TRANSFORM(nn, "@0")
        M.data = SUBSTR(M.data, AT('x',M.data)+ 1 )
ENDCASE
RETURN M.data
...
Рейтинг: 0 / 0
Зарегистрировать .DLL
    #36501508
собсно сама регистрация

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
FUNCTION RegisterControl
*-- This function registers an OCX/ActiveX control
*   or set of OCX/ActiveX controls based on the
*   name of file.
*-- Note: It works for OLE servers too.
*-- Parameters:
*      tcFileName = the name of the file that contains
*                   the control(s), including the path.
*-- Returns:
*      Logical TRUE if successful, FALSE otherwise.
*      Also returns FALSE if the file doesn't exist.
*-- Call sample:
*      llRegistered = RegisterControl("c:\windows\system\comctl32.ocx")

LPARAMETERS tcFileName
LOCAL llSuccess

IF FILE(tcFileName)
   DECLARE INTEGER DllRegisterServer ;
      IN (tcFileName) ;
      AS __DllRegisterServer__
   *-- This function returns 0 if successful
   IF __DllRegisterServer__() =  0 
      llSuccess = .T.
   ELSE
      llSuccess = .F.
   ENDIF
ELSE
   llSuccess = .F.
ENDIF

RETURN llSuccess
...
Рейтинг: 0 / 0
Зарегистрировать .DLL
    #36501597
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: КонецЦикла
> собсно сама регистрация

Тебе уже говорили, но я повторю:
У пользователя может не быть прав на запись регистрационной информации в нужные ветки реестра.

Если совсем уж нужна регистрация без админа, поищи либо здесь, в разделе VB, либо на bbs.vbstreets.ru, там когда-то
подымалась эта тема и пришли к решению что регистрировать нужный АктивХ можно ветку Current_User. Но эта регистрация
временная и её нужно проделывать каждый раз после логина пользователя.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Зарегистрировать .DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]