如何为所有用户注册COM对象

| 我使用
regsvr32 MyCOM.dll
为我的应用程序注册com对象。在我的管理员帐户下可以正常工作。如果将用户切换为非管理员,程序将失败。似乎未为非管理员用户加载COM对象。关于这可能是什么或可能的解决方案的任何想法?     
已邀请:
通常,COM对象需要由管理员用户注册。 (我不会在这里介绍一些微妙和例外,因为根据您的描述,这不是正在发生的事情。) 但是,一旦注册了COM对象,只要该对象已以适当的权限注册,则所有用户都应该能够使用它。     
regsvr32 MyCOM.dll
将调用dll中的DllRegisterServer导出函数,该事件取决于dll。通常,它将在HKEY_LOCAL_MACHINE \\ software \\ Classes下注册它的CLSID和其他注册信息(对于写操作,它与HKEY_CLASSES_ROOT相同),因此该注册应该对每个用户可见,除非该用户在HKEY_CURRENT_USER \\下的注册有冲突。软件\\类。 我想这不是注册的问题,但是您的COM对象所做的事情阻止了非管理员用户的加载(请求对HKEY_LOCAL_MACHINE下的密钥进行写访问等),您可以使用Process Monitor并查找ACCESS_DENIED错误看看是否有任何线索。 另一个选择是为非管理员用户手动在HKEY_CURRENT_USER \\ software \\ Classes下注册对象。这应该排除注册问题。     

要回复问题请先登录注册