访问Windows服务中的当前用户个人证书存储

时间:2010-06-17 11:38:32

标签: c# x509

我正在开发一个从当前用户商店访问x.509证书的应用程序。当应用程序作为可执行文件运行时,这可以正常工作。

但是,当我尝试将应用程序作为Windows服务运行时,它无法找到证书。我尝试更改windowsservice控制台的LogOn属性以设置正确的用户,但这没有帮助。

我有什么方法可以访问特定用户(管理员)证书存储区吗?我必须在用户商店中使用证书 - 否则我可以轻松使用本地机器商店。

任何帮助将不胜感激。

我正在使用这段特殊代码来检索证书:

                        serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "My-CertificateName");

这在作为可执行文件运行时工作正常 - 但在作为Windows服务运行时无法找到证书

1 个答案:

答案 0 :(得分:1)

当我在过去遇到这样的问题时,它与用户权限有关,虽然如果您已将服务设置为以管理员身份运行,并以管理员身份运行应用程序,那么我就是一个有点怀疑。

也就是说,尝试这两个链接开始 - 它们是从WCF的角度编写的,但很容易应用于任何类型的服务:

Working with Certificates

How to: Make X.509 Certificates Accessible to WCF

如果这些都没有帮助,请编辑您的问题以包含您用于访问x.509证书的代码。