在Windows7上,regsvr32不会写入HKCR\CLSID

lei*_*ren 4 com regsvr32 windows-7

我使用ATL向导在Visual Studio 2008中创建了一个新的简单COM对象.该对象具有单个类和简单方法.ATL向导.rgs为我的班级生成了-files.

当我regsvr32 Simple.dll在我的XP机器上运行时,该类已注册,信息显示HKCR\Simple.SimpleObjectHKCR\CLSID\{guid}我预期的内部和内部.

但是,在我的64位Windows 7机器上它并不相同.我以管理员身份运行regsvr32 HKCR\Simple.SimpleObject显示部件.但是这部分 HKCR\CLSID永远不会到达那里.因此我无法创建新实例.(绝望的我在System32和SysWOW64中都尝试了regsvr32,效果相同.)

为什么不regsrv32把数据放入 HKCR\CLSID

Han*_*ant 7

HKCR是HKLM\Software\Classes的别名,但并未显示所有内容.查看已注册的{guid}的HKLM\Software\Wow6432Node\Classes\CLSID.这是c:\ system32\syswow64\regsvr32.exe写入它们的位置.

你确实提到过你已经尝试过了.有一些问题,你不能随意运行任何版本的Regsvr32.exe并获得相同的DLL注册.无法在64位进程中加载​​32位DLL.换句话说,64位版本的Regsvr32.exe无法注册32位COM服务器.反过来说.为什么你没有得到错误消息是不可能的从这里,唯一明智的解释是你不知何故实际上没有运行正确版本的Regsvr32.

要真正调试它,请使用SysInternals的ProcMon实用程序.它的跟踪向您展示了ATL注册商如何在注册表中编写密钥.