如何为注册为受限用户创建COM对象?
我在vs2010中创建了一个项目,它是为每个用户安装的,但我需要包含一个COM对象(在dll中,我使用的是ATL)。问题是我只能使用管理员权限注册DLL,但我的安装程序不需要管理员权限,com注册失败 这就是我发现的: 我进行了修改,将.rgs文件从HKCR更改为HKCU,并修改了DllRegisterServer代码,以通过HKCU\Software\Classes覆盖HKCR 但是我得到了相同的错误:0x8002801c使用regsvr32(作为受限用户),安装程序也给了我一个错误。是否还需要创建每个用户的COM对象如何为注册为受限用户创建COM对象?,com,atl,Com,Atl,我在vs2010中创建了一个项目,它是为每个用户安装的,但我需要包含一个COM对象(在dll中,我使用的是ATL)。问题是我只能使用管理员权限注册DLL,但我的安装程序不需要管理员权限,com注册失败 这就是我发现的: 我进行了修改,将.rgs文件从HKCR更改为HKCU,并修改了DllRegisterServer代码,以通过HKCU\Software\Classes覆盖HKCR 但是我得到了相同的错误:0x8002801c使用regsvr32(作为受限用户),安装程序也给了我一个错误。是否还
Thans.创建引用DLL的清单文件。查看Visual Studio 2017中的无痛清单生成,您可以在项目属性>链接器>常规中启用每个用户重定向选项 我不需要修改rgs文件 要注册COM.exe,请使用/RegServerPerUser标志。normal/RegServer标志对我不起作用()
要注册COM.dll,请使用
regsvr32/n/i:user“xxxx.dll”
()。使用SysInternals的ProcMon实用程序找出它正在写入的密钥。如果您只看到正在编写HKCU,那么您确实需要允许用户编写自己的注册表项。regsvr32/i
使用DllInstall
而不是DllRegisterServer
,使用HKCU(与默认HKCR相反)选项进行注册。在ATL的当前状态下,DllInstall
的实现包含在标准项目模板中。