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