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

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

我们有一台运行终端服务的 Windows Server 2008 计算机。当用户登录时,会启动一个自定义程序,该程序驻留在系统托盘中,为用户提供一些适用于我们公司的自定义热键。

当我们需要更新此程序时,我们必须关闭所有会话中的程序所有副本,新版本才会真正生效(更多信息请点击此处)。我可以轻松结束所有会话的进程Taskkill,但我想知道是否有一种简单的方法可以重新启动所有会话的进程。

我确实有权访问管理员帐户,但我无权访问任何其他用户密码。

是否可以从命令行为另一个登录用户启动程序?

答案1

不。Windows 不提供您在此处询问的用户模拟功能。Windowssudo中没有等效功能,甚至没有近似功能。

我目前找不到该文档或文章,但不允许sudo在 Windows 中使用 -style 用户模拟功能是 NT 内核早期的一项刻意设计决定,因此,我们非常坚持这样做。(甚至没有任何巧妙的解决方法或黑客可以像通常那样规避它 - 这个问题根深蒂固,难以绕过。)

在 Windows 世界中,为了以用户身份执行 [实际上] 任何操作(无论是运行程序、针对 AD 进行身份验证还是其他任何操作),您需要一个访问令牌,用于识别和验证用户的访问/权限。此访问令牌是仅有的在提供用户的帐户名和密码时创建(登录时,等等RunAs)。

对你的目的而言,潜在的重要警告是,现有的访问令牌可以重复进入模拟令牌,可以传递给ImpersonateLoggedOnUser 函数,可用于模拟登录用户的安全上下文

鉴于您是那些可能知道如何使用.NET 的神秘魔法的开发人员/程序员之一,这可能对您编写小型应用程序来实现您想要做的事情很有用。

但是,准确地说,没有可以运行的命令或可以遵循的过程来模拟 Windows 用户,除非编写一个代码(或找到别人编写的代码),即使这样,它也仅限于具有访问令牌的用户(已登录的用户)。

答案2

如果用户已登录,您可以使用类似owexec以他们的身份启动进程。它不需要他们的密码。我们使用它来做一些与您描述的非常相似的事情,除了终端服务部分。

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

答案3

如果您谈论的是本地软件而不是 RemoteApp,那么我猜在您的情况下最有用的是使用 PsExec:

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

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

相关内容