0

フレームワーク 4.0 用にコンパイルされた .net サンプル FindPrivateKey をダウンロードし、さまざまなプラットフォーム (32 ビット、64 ビット、任意の CPU) で試しましたが、機能しませんでした。常に同じエラー: 序数 345 がダイナミック リンク ライブラリ comctl32.dll に見つかりませんでした。Windows 7 Enterprise の 64 ビット版を使用しています。このメソッドの呼び出しは失敗します。matches = X509Certificate2UI.SelectFromCollection(store.Certificates, "Select certificate", "Select the certificate to find the location of associated private key file:", X509SelectionFlag.SingleSelection); ここで何が問題になる可能性がありますか?

アレクサンダル

4

1 に答える 1

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>
于 2011-04-22T14:06:57.050 に答える