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

Rac*_*hel 5 windows-server-2008 command-line-interface windows-terminal-services

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

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

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

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

Hop*_*00b 5

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

我目前找不到该文档或文章,但sudo在 Windows 中不允许使用 风格的用户模拟功能是 NT 内核早期的一个深思熟虑的设计决策,因此,我们非常坚持用它。(甚至没有任何聪明的解决方法或黑客手段来规避它,就像通常那样 - 这个问题根深蒂固,无法绕过。)

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

潜在的重要警告(出于您的目的)是现有的访问令牌可以复制模拟令牌,该令牌可以传递给ImpersonateLoggedOnUser 函数,该函数可用于模拟登录用户的安全上下文

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

然而,要明确的是,除了编码(或找到其他人编码)之外,没有任何命令可以运行或处理来模仿 Windows 用户,即使如此,它也仅限于拥有访问令牌的用户可用(登录用户)。