2012-02-21 18 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,此安装需要重新启动。