Как я могу создать COM-объект для регистрации как ограниченный пользователь?

Я создаю проект в vs2010, он предназначен для установки для каждого пользователя, но мне нужно включить COM-объект (в dll я использую ATL). Дело в том, что я могу зарегистрировать DLL только с правами администратора, но мой установщик не требует прав администратора, и регистрация com не выполняется.

Вот что я нашел: http://blogs.msdn.com/b/jaredpar/archive/2005/05/29/423000.aspx.

Я внес эти изменения, изменил файлы .rgs с HKCR на HKCU и изменил код DllRegisterServer, чтобы переопределить HKCR с помощью HKCU \ Software \ Classes.

Но я получаю ту же ошибку: 0x8002801c с использованием regsvr32 (как ограниченный пользователь), и установщик также выдает мне ошибку. Есть ли что-то еще, необходимое для создания COM-объектов для каждого пользователя?

Thans.


person Cesar    schedule 31.01.2011    source источник
comment
Используйте утилиту SysInternals ProcMon, чтобы узнать, в какие ключи она записывает. Если вы видите, что записывается только HKCU, вам действительно нужно разрешить пользователю писать свои собственные ключи реестра.   -  person Hans Passant    schedule 31.01.2011
comment
regsvr32 /i регистрирует, используя DllInstall вместо DllRegisterServer, с опцией HKCU (в отличие от HKCR по умолчанию). В текущем состоянии ATL реализация DllInstall включена в стандартный шаблон проекта.   -  person Roman R.    schedule 14.12.2017


Ответы (2)


Создайте файл манифеста, который ссылается на DLL. Ознакомьтесь с этим инструментом для безболезненного создания манифеста

person Goran Peroš    schedule 23.02.2011

В Visual Studio 2017 вы можете включить параметр Перенаправление для каждого пользователя в свойствах проекта> Компоновщик> Общие.

Мне не нужно было изменять файл rgs.

Чтобы зарегистрировать COM .exe, используйте флаг / RegServerPerUser. Стандартный флаг / RegServer у меня не работает (ссылка).

Чтобы зарегистрировать COM .dll, используйте regsvr32 /n /i:user "xxxx.dll" (ссылка).

person pogosama    schedule 14.12.2017