2012-02-21 17 views
-3

我正在開發一個Windows應用程序,它將作爲Windows服務安裝。找到啓動服務的用戶的用戶名和密碼c#

此安裝需要管理員用戶及其密碼。

有沒有什麼辦法恢復用戶和用C#啓動這個服務的密碼以編程的方式

+0

@moderator:如果此問題不屬於此處,請將其移至正確的問題和社區。 – 2012-02-21 09:25:27

+2

我真的希望不是。如果服務可以訪問啓動它的用戶的密碼,那麼這看起來像是嚴重的安全漏洞。用戶名應該可以訪問。你爲什麼要在服務內部檢索密碼? – 2012-02-21 09:27:13

+0

我只是需要它。 – 2012-02-21 09:28:18

回答

1

最簡單的支持解決方案是在某處存儲另一個密碼副本,可能使用CryptProtectDataCryptUnprotectData

您可能可以使用LsaRetrievePrivateData檢索服務管理器使用的密碼。顯然,祕密的名稱是服務名稱(注意:由CreateService中的lpServiceName指定的內部服務名稱,而不是服務顯示名稱)。目前尚不清楚你需要採取什麼安全措施來做到這一點。即使它有效,這也不是一項支持的技術。

或者您可以安裝credential manager以在服務啓動時捕獲密碼。 IIRC,此安裝需要重新啓動。