从作为 LocalSystem 运行的 WCF 托管服务以特定用户身份启动进程

Posted

技术标签:

【中文标题】从作为 LocalSystem 运行的 WCF 托管服务以特定用户身份启动进程【英文标题】:Start a process as a specific user, from a WCF managed service running as LocalSystem 【发布时间】:2011-01-13 08:10:45 【问题描述】:

当服务作为 LocalSystem 运行时,是否可以从作为 Windows 托管服务托管的 WCF 服务在远程服务器上生成进程?

我需要人们能够在他们自己的帐户环境下在远程服务器上执行操作(基本上就像 PSExec - 这不是一个选项)。

我之前做过一些半心半意的尝试,但是当使用 process.start 时,如果托管 WCF 组件的 Windows 服务作为 LocalSystem 运行,则无法让进程作为特定用户运行。

我知道这可以通过其他方法实现,但我特别想知道上述是否可以实现 - Windows 服务作为 LocalSystem 运行并托管 WCF 服务,然后作为指定用户生成一个进程。

谢谢

米克

【问题讨论】:

关于您尝试使用 Process.Start 时发生了什么的任何细节? 如果我在 process.start 中指定了用户名和密码,那么进程会生成,但会直接死掉。我认为错误消息说它是无效的应用程序。我目前没有任何工作代码,所以我无法给出确切的错误。在投入大量时间之前,我正在尝试确定是否有可能,对于含糊不清的情况深表歉意。 【参考方案1】:

您可以使用Process.Start 方法,该方法允许您指定运行进程的用户。

【讨论】:

嗨达林。我试过了。当服务作为 Localsystem 运行时,生成的进程会启动,但随后会立即因错误而死亡(我不记得它是什么)。我似乎记得,如果我将服务设置为作为域帐户运行,那么在 process.start 中指定用户和密码可以正常工作。但是,这将需要在许多服务器上将必要的权限应用于域帐户,这将很难让我们的安全人员通过。 @Mick,您不需要使用域帐户。只需将此参数留空,它将使用本地计算机帐户。 感谢 Darin,不幸的是,这仍然需要创建本地帐户并获得相关权限,因此希望将 Windows 服务作为 LocalSystem 运行,因为它已经拥有必要的用户权限。 米克,你做到了吗?我们遇到了同样的问题...如果您能分享您的知识,那将非常有用。

以上是关于从作为 LocalSystem 运行的 WCF 托管服务以特定用户身份启动进程的主要内容,如果未能解决你的问题,请参考以下文章

以提升的权限调用自定义操作,但不是作为 LocalSystem

LocalSystem 服务如何以用户身份运行应用程序 [C#]?

Azure - 将 WCF 服务作为 WebJob 运行

如何从 WCF 服务返回 xml 响应

跨域 WCF - Silverlight 配置错误 a:ActionNotSupported

连接到在另一台计算机上作为 Windows 服务运行的 WCF