Как зарегистрировать один и тот же COM dll для другой учетной записи пользователя в той же системе - PullRequest
1 голос
/ 26 марта 2012

У меня есть win32 COM dll. Я хочу зарегистрировать эту dll для разных пользователей в одной системе.

Расположение DLL отличается для каждого пользователя.

C:\users\user1\mydll.dll
C:\users\user2\mydll.dll
C:\users\user3\mydll.dll

В процессе установки будет зарегистрирована dll.

Выпуск:

если пользователь user1 удалит продукт, mydll.dll будет не зарегистрирован, поэтому приложение не будет работать для user2 и user3.

Решение:

Могу ли я зарегистрировать mydll.dll для каждого пользователя отдельно (user1, user2 и т. Д.)

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Вы не можете зарегистрировать (как один пользователь) DLL для других пользователей.Если у вас есть достаточные права, вы можете зарегистрировать DLL на данном компьютере (HKEY_LOCAL_MACHINE), и вы можете зарегистрировать ее для себя (HKEY_CURRENT_USER), но вы не можете зарегистрировать ее для других пользователей (HKEY_USERS\S-1-5-21-*).

Возможно, вы уже сталкивались с той же проблемой раньше, когда пытались написать C:\users\user2\mydll.dll с разрешениями user1.Несмотря на то, что пользователи-администраторы являются мощными и могут писать в \Program Files\, они не всемогущи.Пользовательские каталоги запрещены.

0 голосов
/ 26 марта 2012

Я полагаю, что вы должны поместить вашу dll в общую папку (например, D & S \ Application Data \ My Company \ Shared), а установщик должен пометить ее как "общий файл" (я не знаю, какой установщик вы используете, я Я использую Inno Setup, и у него есть такая опция, и если я прав, это стандартно в Windows). Таким образом, отмена регистрации должна продолжаться только тогда, когда общее количество ссылок равно нулю.

Также рекомендации MS такие же http://msdn.microsoft.com/en-us/library/ms954376.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...