0

次のコードは、PrivateKey または PublicKey を出力しようとすると、次のメッセージで失敗します。(拇印は正常に出力されます。):

プロセスは、この操作に必要な「SeSecurityPrivilege」権限を持っていません。

ローカル管理者として実行すると、機能します。この問題を回避するにはどうすればよいですか。

fyi .. 証明書 (pfx) はパスワードで保護されていますが、このコード スニペットでそれを示す方法がわかりません。

var certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadOnly);
string thumbprint = "D80FB0BB6485B6A2DE647812C5AA72A8F7ABA14C";

X509Certificate2Collection certCollection = certStore.Certificates.Find(
    X509FindType.FindByThumbprint,
    thumbprint, false);

// Close the certificate store.
certStore.Close();

if (certCollection.Count == 0)
{
    throw new SecurityException(string.Format(CultureInfo.InvariantCulture, "No certificate was found for thumbprint {0}", thumbprint));
}
Console.WriteLine(certCollection[0].PrivateKey);
4

1 に答える 1

1

そのアカウントに「監査とセキュリティ ログの管理権限」を付与する必要があります。詳細については、 http://support.microsoft.com/kb/2000257/en-USを参照してください。ただし、これは証明書操作にとっては非常に奇妙です。

RSA キー コンテナーのアクセス許可を表示する方法は、秘密キーへのアクセスに同じ特権を必要とすることについて説明しているため、ここで関連する可能性があります。

アカウントには権限がある可能性がありますが、有効にする必要がある場合があります。サンプル コードについては、「C# Random Exception when Getting / Setting Registry ACL "SeSecurityPrivilege"」を参照してください。

于 2012-09-07T15:24:07.800 に答える