Windows 7 中的交互式会话 0

Windows 7 中的交互式会话 0

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

sc config UI0Detect start= auto
net start UI0Detect

响应表明服务已正确启动。此时,我假设如果我切换到会话 0,cmd.exe 将会运行。

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

rundll32 winsta.dll,WinStationSwitchToServicesSession

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

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

答案1

要在会话 0 中启动 cmd.exe,请使用 psexec系统内部

psexec.exe -s 0 cmd.exe

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

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

psexec.exe -s -i 0 cmd.exe

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

您拥有 Windows 7 中所能获得的尽可能多的权利:

whoami /all

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

pslist /accepteula

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

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

qprocess /ID:0

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

答案2

它不起作用。它只是以系统身份启动一个进程。

服务是以特殊方式编写的程序,用于接受来自服务控制管理器的命令。

MS 有一个实用程序,允许将程序作为服务运行。它被称为SrvanyWindows 2003 资源工具包工具。

下载 Windows Server 2003 资源工具包工具

答案3

有一天我偶然发现了解决方案,但是http://www.alex-ionescu.com/?p=59还记录了与我发现的接近的解决方案

使用以下内容创建一个批处理文件(称为 some.bat)

start cmd

然后创建一个服务来调用该批处理文件(使用管理命令提示符)

sc create access0 type= interact type= own binpath= some.bat

(请注意每个 = 后面的空格,我建议对 some.bat 使用完整路径)

然后就是启动服务的问题

sc start ui0detect
sc start access0

(无需使用 sc config UI0Detect start= auto 使 ui0detect 自动启动)

如果一切顺利,您将看到即将出现的消息闪烁框!转到查看消息,您将拥有一个管理员 (nt authority\system) 命令提示符,它不会因服务启动失败而自动销毁(因此需要带有启动命令的批处理文件)

这确实有效,尽管有时第一次尝试并不奏效。

我相信这只允许您访问交互式会话 0,该会话仅对 nt authority\system 用户存在

答案4

您可以使用快捷键 start(Windows)+R 来启动“运行”对话框。从那里,只需输入“cmd”(不带引号)即可。cmd

相关内容