UAC管理员下的组件创建失败,没有UAC提升

时间:2011-04-13 12:52:35

标签: com registry registration win32com

我有一个带有自定义注册程序的 .NET COM dll ,因此它在 HKEY_CURRENT_USER \ Software \ Classes 下注册,与 HKEY_LOCAL_MACHINE 相反。所以有以下键(当前用户是Windows 7 PC上的管理员):

HKEY_CURRENT_USER\Software\Classes\My.ProgId\CLSID
HKEY_CURRENT_USER\Software\Classes\CLSID\{XYZZYZYZYZ-YZYZY-ZYZYZY} etc

如果我构建一个简单的C ++客户端:

hr = CLSIDFromProgID(OLESTR("My.ProgId"), &clsid); 

并在没有 UAC提升(Windows 7)的情况下运行它,它会成功创建组件。 另一方面,如果我在打开高程时运行,则会失败并显示Invalid class string

我已经使用进程监视器进行了检查,当它运行时,它会查找 HKCU \ Software \ Classes \ My.ProgID 键并且打开正常。当它失败(提升)时,它会查找 HKCR \ My.ProgId 以及NAME NOT FOUND的错误。尽管从classes_root手动打开注册表项是成功的:

HKEY key;
RegOpenKey( HKEY_CLASSES_ROOT, _T( "My.ProgId"), &key);

请帮忙!感谢

0 个答案:

没有答案