3

これが私の簡単な方法です:

private static X509Certificate2 GetCertificateFromStore(StoreLocation storeLocation, string certName) {
    var store = new X509Store(StoreLocation.LocalMachine);
    try {
        store.Open(OpenFlags.ReadOnly);
        var certs = store.Certificates.Find(X509FindType.FindBySubjectName, certName, true);
        return certs.Count == 0 ? null : certs[0];
    }
    finally {
        store.Close();
    }
}

読み込まれたローカル ショーをデバッグしstore.Certificates、2 つの証明書 (既定の "localhost" とインポートしたもの) を含むため、正しいストアが正常に開かれています。

ただし、このメソッドは、検索する証明書や、 またはFind()を使用するかどうかに関係なく、常に空の結果を返します。FindBySubjectNameFindByThumbprint

何が間違っている可能性がありますか?これは、証明書の読み込みの学習とテストのみを目的として作成された単純なコンソール アプリです。つまり、プロジェクト構成やその他の場所には、デフォルト以外のものはほとんどありません。

4

1 に答える 1

4

store.Certificates.Find() メソッドの 3 番目のパラメーターとして false を試してください。証明書が無効であり、除外されている可能性があります。

于 2013-01-23T16:00:20.957 に答える