2014-02-27 156 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

相關問題