2014-02-27 157 views
0

我们想创建一个服务,它会自动从商店中删除证书(使用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(); 

回答

0

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

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

+0

谢谢你的信息。 我们按照您的建议做了,但服务一开始就崩溃了。我们使用的帐户是否是一个域帐户这个事实? 否则,我们编译代码,在一个帐户下安装并运行服务 - 如果不是当前用户,那么该存储会被读取? – user3356250

+0

域帐户不应该对服务产生影响。我之前多次在域帐户下运行服务。它在哪里崩溃。你有记录发生了什么?当您为服务配置凭证时,是否输入了像'domain \ username'这样的用户名?你给了正确的密码吗? – pepo

+0

在实际做任何事之前,它在开始的时候坠毁了。用户名和密码绝对正确,不接受错误的。至于日志,我们会尝试获取它。有什么方法可以获得商店的名称,然后按名称进行调用? – user3356250

相关问题