:: Visual Foxpro, Foxpro for DOS
Регистрация DLL в Windows 10 x64
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
На Windows10 имею проблему с использованием dll-ки.
LOCAL loApp, m.lnError, m.loErr AS Exception
m.lnError = 0
TRY
loApp = CreateObject("SW_API.SwApp")
CATCH TO loErr
*!* oApp.ErrMessage(loErr.Message)
ENDTRY
IF VARTYPE(loErr) = "O"
m.lcScript = "RUN RegSvr32 /s /c " + FULLPATH(".\Users\SW_API.dll")
EXECSCRIPT(m.lcScript)
TRY
loApp = CreateObject("SW_API.SwApp")
CATCH TO loErr
oApp.ErrMessage(loErr.Message)
ENDTRY
ENDIF
получаю ошибку:
Определение класса SW_API.SwApp не найдено
На предыдущих ОС всё работало нормально. Предполагаю, что проблема с регистрацией библиотеки. Если да, то как правильно сделать под 10-ку?
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
sphinx

Сообщений: 31188
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Может поможет....

Цитата:
Примечание. В 64-разрядных версиях Windows есть две версии файла Regsv32.exe:
64-разрядная версия — %systemroot%\System32\regsvr32.exe;
32-разрядная версия — %systemroot%\SysWoW64\regsvr32.exe.

support.microsoft.com


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
1) Для регистрации стоит напрямую вызывать DllRegisterServer экспортируемый компонентой (DECLARE DLL), а не использовать консольную утилиту которая по сути именно эту функцию и вызывает.
2) Для регистрации компоненты требуется административный доступ. Т.е. надо запускать программу (та которая и будет производить регистрацию) с правами администратора. Поэтому такую регистрацию крайне желательно делать из установщика, а никак не непосредственно из рабочей программы.
3) Есть вариант RegFreeCom, где вместо регистрации в реестре (со всем вытекающим из этого геморроем) нужная информация прописывается в манифест той программы которая и будет использовать компоненту - в поиск по форуму за подробностями.


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 11.12.19 22:14
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
Vedmak

Сообщений: 5973
Откуда: CiTY
Дата регистрации: 30.10.2003
hztp_serg
...На предыдущих ОС всё работало нормально. Предполагаю, что проблема с регистрацией библиотеки. Если да, то как правильно сделать под 10-ку?

Игорь правильно указал. Если перефразировать, то в Win10 достаточно серьезно переработана политика вторжения в ОС. Таким образом ранее казавшееся тривиальной регистрация новой библиотеки требует пересмотрения.

Права пользователя теперь "наше все".


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Igor Korolyov
1) Для регистрации стоит напрямую вызывать DllRegisterServer экспортируемый компонентой (DECLARE DLL), а не использовать консольную утилиту которая по сути именно эту функцию и вызывает.
2) Для регистрации компоненты требуется административный доступ. Т.е. надо запускать программу (та которая и будет производить регистрацию) с правами администратора. Поэтому такую регистрацию крайне желательно делать из установщика, а никак не непосредственно из рабочей программы.
3) Есть вариант RegFreeCom, где вместо регистрации в реестре (со всем вытекающим из этого геморроем) нужная информация прописывается в манифест той программы которая и будет использовать компоненту - в поиск по форуму за подробностями.
Большое спасибо за ответ!
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
Sega

Сообщений: 511
Откуда: Ярославль
Дата регистрации: 27.12.2000
Igor Korolyov
1) Для регистрации стоит напрямую вызывать DllRegisterServer экспортируемый компонентой (DECLARE DLL), а не использовать консольную утилиту которая по сути именно эту функцию и вызывает.
2) Для регистрации компоненты требуется административный доступ. Т.е. надо запускать программу (та которая и будет производить регистрацию) с правами администратора. Поэтому такую регистрацию крайне желательно делать из установщика, а никак не непосредственно из рабочей программы.
3) Есть вариант RegFreeCom, где вместо регистрации в реестре (со всем вытекающим из этого геморроем) нужная информация прописывается в манифест той программы которая и будет использовать компоненту - в поиск по форуму за подробностями.

Поддержу. Я с помощью подсказки Игоря как раз реализовал изолированные RegFreeCom. Всё достаточно понятно. Но сразу хочу поделиться опытом, что полностью решить проблему удалось только поднятием прав программы в самом манифесте

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="FullTrust" />
<PermissionSet version="1" ID="FullTrust" Unrestricted="true"/>
</applicationRequestMinimum>
</security>
</trustInfo>

Иначе, если у пользователя в операционке урезаны права, то COM-объект создается, но работает криво.

Я уже ранее задавал подобные вопросы forum.foxclub.ru
Удачи.
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Смотря что за ком-объект... Обычным календарикам/деревьям/выбирателям дат админские права не нужны. А если это компонента для взаимодейтвия с каким железом, ещё и писанная "восточными партнёрами" - то не удивительно


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Регистрация DLL в Windows 10 x64
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
ИК, зачем ты написал это ответ? Ты - светоч мысли ФК, а написал, что "хз", как пишем мы, плебеи.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 33 (Гостей: 33)

© 2000-2024 Fox Club 
Яндекс.Метрика