Windows 7 中的交互式会话 0

omg*_*i2u 14 windows-7 session command-line

我正在尝试在会话 0 中启动 cmd.exe。到目前为止,我已经从提升的命令提示符下完成了以下操作:

sc config UI0Detect start= auto
net start UI0Detect
Run Code Online (Sandbox Code Playgroud)

并且响应表明服务已正确启动。正是在这一点上,我假设如果我切换到会话 0,cmd.exe 将运行。

我使用以下命令切换到会话 0:

rundll32 winsta.dll,WinStationSwitchToServicesSession
Run Code Online (Sandbox Code Playgroud)

这成功地将我切换到会话 0,但唯一可用的窗口是可以选择返回会话 1 的窗口。

如何让 cmd.exe 在会话 0 中启动?

Pet*_*orf 19

要在会话 0 中启动 cmd.exe,请使用Sysinternals 中的psexec

psexec.exe -s 0 cmd.exe
Run Code Online (Sandbox Code Playgroud)

现在你有一个在会话 0 中运行的控制台,

您还可以在会话 0 中启动 cmd.exe 并显示 GUI:

psexec.exe -s -i 0 cmd.exe
Run Code Online (Sandbox Code Playgroud)

这样,当您切换到会话 0 时,cmd.exe 将在那里等您。

您在 Windows 7 中拥有尽可能多的权利:

whoami /all
Run Code Online (Sandbox Code Playgroud)

如果您使用其他 PsTools,请记住使用 /accepteula 开关:

pslist /accepteula
Run Code Online (Sandbox Code Playgroud)

否则程序会弹出消息框要求接受Eula,程序会挂掉,因为会话0中没有UI来关闭消息框。

要验证您是否在会话 0 中运行,您可以使用 qprocess:

qprocess /ID:0
Run Code Online (Sandbox Code Playgroud)

您将在所有服务进程中看到您的“cmd.exe”。

  • 第一个命令行是错误的:`-s` 以 `SYSTEM` 用户身份运行并且不带参数。也许您的意思是第一个示例中的“-i 0”和第二个示例中的“-s -i 0”? (6认同)
  • 我不认为 Sysinternal 工具是来自 Microsoft 的“第 3 方”,您不必安装它们。 (2认同)