How to Register a COM Object for All Users

℡╲_俬逩灬. 提交于 2019-11-30 19:22:30

COM objects need to be registered by an admin user, usually. (There are subtleties and exceptions that I won't get into here, because based on your description that's not what's going on.)

However, once the COM object has been registered, all users should be able to use it provided that the object was registered with appropriate permissions.

regsvr32 MyCOM.dll will call the DllRegisterServer exported function in the dll, what happens there is up to the dll. Usually it will register it's CLSID and other registration info under HKEY_LOCAL_MACHINE\software\Classes (Same as HKEY_CLASSES_ROOT for write operations) and so the registration should be visible to every user unless the user has a conflicting registration under HKEY_CURRENT_USER\software\Classes.

I'm guessing that the registration is not the problem, but that your COM object does something that prevents it from loading for non admin users (Requesting write access to a key under HKEY_LOCAL_MACHINE etc) You can use Process Monitor and look for ACCESS_DENIED errors and see if that provides any clues.

The other option is to manually register the object under HKEY_CURRENT_USER\software\Classes for the non-admin user. This should rule out registration issues.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!