我编写了一个 C# .NET Com 可调用包装 DLL。我使用 StrongName 对其进行了签名,并使用 64 位 regasm.exe 注册了代码库和类型库。使用 64 位 OleViewer 可以看到注册和所有控件的方法。但是,当我尝试使用来自 64 位 \Windows\System32\cscript.exe 的控件时:
Set logger = CreateObject("MyCompany.LoggerControl")
这会产生错误:
Microsoft VBScript 运行时错误:ActiveX 组件无法创建对象:“MyCompany.LoggerControl”
使用来自 Sysutils 的 ProcMon 来追踪它,我发现:
1:41:44.8295486 PM cscript.exe 24028 RegOpenKey HKCR\MyCompany.LoggerControl
NAME NOT FOUND 所需访问权限:读取
但是,该键存在于 Regedit 中。调用进程从提升的命令提示符运行。如果这是一个安全问题,错误不应该是“拒绝访问”而不是“未找到名称”吗?
还有什么其他工具可以追踪这种类型的 COM 控件注册错误?