Com 组件创建在UAC管理下失败,在没有UAC提升的情况下工作

Com 组件创建在UAC管理下失败,在没有UAC提升的情况下工作,com,registry,registration,win32com,Com,Registry,Registration,Win32com,我有一个带有自定义注册过程的.NET COM dll,因此它可以在HKEY\U CURRENT\U USER\Software\Classes下注册,与HKEY\U LOCAL\U机器相对。因此有以下键(当前用户是Windows 7 PC上的管理员):

我有一个带有自定义注册过程的.NET COM dll,因此它可以在HKEY\U CURRENT\U USER\Software\Classes下注册,与HKEY\U LOCAL\U机器相对。因此有以下键(当前用户是Windows 7 PC上的管理员):

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

hr = CLSIDFromProgID(OLESTR("My.ProgId"), &clsid); 
并在不使用UAC标高的情况下运行它(Windows 7)
,它将成功创建组件。 另一方面,如果我在启用提升的情况下运行,它将失败,因为
类字符串无效

我用process monitor检查过,当它工作时,它会查找HKCU\Software\Classes\My.ProgID键,然后打开ok。当它失败(提升打开)时,它会查找HKCR\My.ProgId
名称未找到的错误。从
classes\u root
手动打开注册表项是成功的,不过:

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

请帮忙!谢谢

这似乎与此有关有人知道解决方法吗?我是否应该添加一些其他注册表项,以使其与上的高程一起工作?
HKEY key;
RegOpenKey( HKEY_CLASSES_ROOT, _T( "My.ProgId"), &key);