我可以从命令行为另一个login用户启动一个程序吗?

我们有一台运行terminal服务的Windows Server 2008机器。 当用户login时,自定义程序启动并驻留在系统托盘中,为他们提供一些为我们公司定制的热键。

当我们需要更新这个程序的时候,我们必须在新版本实际生效之前closures所有会话中的所有程序副本( 这里有更多的信息 )。 我可以使用Taskkill轻松结束所有会话的过程,但是我想知道是否有一种简单的方法可以在之后重新启动所有会话的过程。

我有访问权限的pipe理员帐户,但我没有访问任何其他用户密码。

是否有可能从另一个login用户的命令行启动程序?

不。Windows不提供您在此处询问的用户模拟function的types。 在Windows中没有sudo等效,甚至是近似值。

目前我找不到文档或文章,但是在Windows中不允许使用sudo风格的用户模拟function是NT内核早期的一个故意的devise决策方式,因此我们非常坚持下去。 (甚至没有任何聪明的解决方法或黑客来绕过它,因为通常情况下,这个解决scheme根深蒂固,无法绕开。

在Windows世界中,为了执行[实际上]作为用户的任何操作(无论是运行程序,对AD进行身份validation还是其他任何操作),都需要一个访问令牌 ,用于标识和validation用户的访问权限。 此访问令牌在提供用户的帐户名和密码时(在login时,对于RunAs等)创build。

(为了您的目的)潜在的重要警告是现有的访问令牌可以复制到模拟令牌中 ,该令牌可以传递给ImpersonateLoggedOnUser函数 ,该函数可以用来模拟login用户的安全上下文 。

看到你是如何成为那些可能知道如何与.NET的神秘工程师一起工作的开发人员/程序员之一,这对你写一个小应用程序来实现你想要做的事情可能是有用的。

但是,要清楚地说明,没有任何命令可以用来模拟Windows用户,也不需要编码(或者find其他人编码),即使这样,用户的访问令牌可用(login用户)。

如果用户login,你可以使用像owexec这样的启动进程。 它不需要他们的密码。 除了terminal服务部分之外,我们使用它来描述与您所描述的非常相似的内容。

您可能需要添加一些脚本才能收集所有活动的会话,然后使用-u选项分别单独定位它们。

如果你正在谈论本地软件而不是RemoteApp,那么我想你的案例中最有用的就是使用PsExec:

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

有关更多使用示例,可​​以访问http://windowsitpro.com/systems-management/psexec