如何从 .net 获取VB6 ocx 的miscStatus而无需在本地计算机上注册?
我使用TLI (TypeLibInfo) 获取有关 ocx 的所有其他信息,但我不知道如何获取此属性?
有人知道 regsvr32 在注册 ocx 时如何生成 MiscStatus 吗?
编辑:我忘了说我想miscStatus
从 ocx 获取而不需要在本地计算机上注册它。
如何从 .net 获取VB6 ocx 的miscStatus而无需在本地计算机上注册?
我使用TLI (TypeLibInfo) 获取有关 ocx 的所有其他信息,但我不知道如何获取此属性?
有人知道 regsvr32 在注册 ocx 时如何生成 MiscStatus 吗?
编辑:我忘了说我想miscStatus
从 ocx 获取而不需要在本地计算机上注册它。
我不相信有像 TLI 这样的标准工具可以做到这一点。miscStatus
似乎是在注册期间通过DLLRegisterFunction
调用编写的,该调用由 DLL/OCX 本身提供,基本上可以做任何它想做的事情。
例如,注册期间要写入的注册表值可能包含在资源中。但这取决于程序员。
查看 regsvr32 本身的一些较旧的源代码,您可以看到它完全省略了关键字miscstatus
. 我认为这证实了它的价值不需要以任何标准化的方式存储。
如果您绝对不能在您的开发/构建 PC 上注册 OCX,那么我能想到的下一个最好的事情就是在某种沙箱中注册它——比如 VM、Sandboxie,甚至可能是 Docker。然后你可以在读取注册表值后扔掉沙盒。但我从来没有真正尝试过这个。
另外,考虑一下这个值是否真的很重要。如果你把它排除在外,有什么东西会坏吗?可能许多杂项状态标志未设置或对您的特定应用程序无关紧要。
您可以尝试使用Registry.GetValue
. 听起来您可能已经拥有 OCX 的 CLSID:
Dim ocxClsid As String = "13DE4A42-8D21-4C8E-BF9C-8F69CB068FCA" ' Replace with your CLSID
Dim key As String = "HKEY_CLASSES_ROOT\CLSID\{" & ocxClsid & "}\"
Dim readValue = My.Computer.Registry.GetValue(
key, "MiscStatus", Nothing)