2011-06-01 35 views
4

我创建了一个C#Windows服务及其附带的Visual Studio安装项目,该工程创建一个安装程序。它成功安装了该服务。安装Windows服务以使用ServiceAccount.User的用户凭据运行,但不提示

当我从除ServiceAccount.User之外的枚举ServiceAccount中选择任何值时,服务将在不提示的情况下使用适当的内置用户进行安装。我之后实际上是在当前用户的凭据下安装服务。当我指定ServiceAccount.User时,安装期间会提示用户名和密码。我需要做的是找到一种方法来使用运行安装程序的用户的凭据安装服务,而不提示输入密码。

这是可能的吗?我愿意采取任何所需的措施(如负载P/Invoke)来完成工作。

+0

服务是做什么的?如果它是每用户服务,那么使用任务调度机制或程序自动启动可能是更好的选择。 – 2011-06-01 10:29:14

+0

是的,你是对的。只有一种情况没有被自动启动覆盖 - 如果程序需要运行,即使没有登录的用户或者如果不同的用户登录,该怎么办?另外,我不确定任务调度和登录用户,但任务调度看起来并不合适,因为应用需要连续运行而不是在指定时间开始。 – wpfwannabe 2011-06-01 12:11:39

回答

5

您不能,除非出现错误配置,您无法提取明文密码,您需要设置该服务。请参阅this similar question

另外,一般来说,应该为服务安装一个独立且唯一的帐户,每个服务具有最低权限。

+1

谢谢!我尽可能多地想,但我想确保。 – wpfwannabe 2011-06-01 11:06:14

1

这是不可能的,正如其他人所建议的。即使从服务管理器中,您想要在某个其他帐户下运行服务(即使它是当前用户帐户),也会要求您再次输入密码。