服务无法读取证书存储区

时间:2014-02-27 09:17:55

标签: c# service permissions certificate x509

我们想要创建一个自动从商店中删除证书的服务(使用c#)。当我们手动运行.exe时,一切顺利。但是当我们从.exe创建一个服务时,它不会读取商店中的证书,并一直说它是空的。

我们可以做些什么来纠正这个问题?

以下是读取商店然后删除所有找到的证书的部分:

X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates;
foreach (X509Certificate2 x509 in storecollection)
{
    store.Remove(x509);
}
store.Close();

1 个答案:

答案 0 :(得分:0)

正在正确阅读商店。问题是您的服务(安装时)在不同的用户下运行。他的证书商店是空的。 当您通过双击.exe运行该服务时,它将在您的帐户下运行。

如果您愿意,可以将服务设置为在您的帐户下运行。您可以在“登录”选项卡上的服务属性中执行此操作。