在WIN 7终极版中从c ++与数字控制c#com dll进行通信时遇到的问题

时间:2010-06-23 11:00:33

标签: c# c++ windows-7

我有一个c#com dll我注册到注册表使用regasm。我从c ++ exe中与这个c#dll进行通信。我使用create instance来初始化dll。当这两个组件都没有签名数字时,它就能完美运行。当它们被数字签名时,cocreate实例失败。得到最后一个错误说“没有找到令牌”。这种情况发生在WIN 7终极和PRo中,就像在xp和vista中一样。

1 个答案:

答案 0 :(得分:1)

签名后,您是否重新注册使用 regasm

使用 regedit 检查HKEY_CLASSES_ROOT\CLSID\{your-guid-here}\InProceServer32的注册信息,例如:

Assembly REG_SZ YourComObjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdfc550b465bd3

如果你的PublicKeyToken=null那么这就是原因。要从DLL获取令牌,请使用sn.exe工具,例如:sn.exe -T path\to\your.dll