【问题标题】:Install Windows service to run under user's credentials with ServiceAccount.User but don't prompt使用 ServiceAccount.User 安装 Windows 服务以在用户凭据下运行,但不提示
【发布时间】:2011-09-06 04:14:04
【问题描述】:

我创建了一个 C# Windows 服务及其随附的 Visual Studio 安装项目,该项目创建了一个安装程序。它成功安装了服务。

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

这有可能吗?我愿意采取任何必要的措施(例如大量 P/Invoke)来完成工作。

【问题讨论】:

  • 服务是做什么的?如果是按用户服务,那么使用任务调度机制或程序自动启动可能是更好的选择。
  • 是的,你是对的。自动启动仅涵盖一次场景 - 如果程序需要在没有登录用户的情况下运行,或者如果其他用户登录,该怎么办?另外,我不确定任务调度和登录用户,但任务调度似乎不合适,因为应用程序需要连续运行而不是在指定时间启动。

标签: c# .net windows-services


【解决方案1】:

你不能,没有办法提取明文密码,除非配置错误并且你需要它来设置服务。见this similar question

此外,一般来说,服务应该安装一个单独的、唯一的帐户,每个服务具有最低权限。

【讨论】:

  • 谢谢!我想了很多,但我想确定一下。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多