Windows 7 64位下的FindPrivateKey不起作用

时间:2011-02-23 14:31:33

标签: x509certificate windows-7-x64 ordinal comctl32

我已经下载了针对框架4.0编译的.net示例FindPrivateKey,尝试用于不同的平台(32位,64位,任何CPU),但它不起作用。始终存在相同的错误:序号345无法位于动态链接库comctl32.dll中。我使用的是Windows 7 Enterprise,64位版本。 此方法调用失败:matches = X509Certificate2UI.SelectFromCollection(store.Certificates,“Select certificate”,“选择证书以查找关联私钥文件的位置:”,X509SelectionFlag.SingleSelection); 这可能有什么问题?

的Aleksandar

1 个答案:

答案 0 :(得分:1)

今天早上我遇到了同样的问题(序号345无法找到......)...... 我用Win7 64bit在3台不同的PC上试过了应用程序;但只有其中一个例外抛出。我发现问题在于使用了comctl32.dll库(与我的不同)。

您可以执行此段代码以检查您正在使用的库版本:

foreach (ProcessModule module in System.Diagnostics.Process.GetCurrentProcess().Modules)
            if (module.ModuleName.ToLower() == "comctl32.dll")
                MessageBox.Show(module.FileVersionInfo.ToString());

然后添加清单并强制应用程序使用特定的库版本: [项目] - >添加新项目 - >申请清单 并编辑它添加以下依赖项部分。

我希望这适合你...

    <?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>

… 
… 
…

  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
</asmv1:assembly>