Windows 7中的交互式会话0


14

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

sc config UI0Detect start= auto
net start UI0Detect

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

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

rundll32 winsta.dll,WinStationSwitchToServicesSession

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

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


你为什么想做这个?UI0Detect允许旧服务弹出消息框,而不启动新的GUI Apps。cmd.exe具有GUI
Peter Hahndorf

6
@PeterHahndorf我知道通过说“让我们退后一步,看看这是否是我们真正需要做的,因为这听起来像是个坏主意”来转移回答的乐趣,并且这是一种让其他开发人员屈服的相对好方法。但是,由于这是用于调试的情况,并且是一种快速解决方案(并且可以替代使用某些诸如AlwaysUp的第三方应用程序),因此我真的不明白问“为什么”是有帮助的响应。不管怎么说,还是要谢谢你。
omghai2u 2012年

我认为彼得有一点。您应该写的问题是“这是我正在尝试做的事”。快速修复只会涉及未来的痛苦。我不能指望听到多少次“快速修复”,而仅仅三年后仍能在生产中看到“快速修复”。。。需要另一个“快速修复”。我假设您正在键入以运行某种批处理脚本?
surfasb 2012年

1
@surfasb您建议的问题实质上是我写的问题:“我正在尝试在会话0中启动cmd.exe。” 请保持针对该问题的答案。谢谢。而且这将不可能进入生产,也不会牵扯到未来的痛苦。我已经确定了将其用于生产的方式,但是无法将其用于调试。我目前用于调试的方式比较麻烦,涉及使用第三方应用程序。
omghai2u 2012年

Answers:


19

要在会话0中启动cmd.exe,请使用Sysinternals中的 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”。


非常感谢您尝试回答我的问题。我的特定意图(如评论中所指出)当然可以,但是要避免使用第三方应用程序。有没有一种好的方法可以不必使用SysInternals工具(或者实际上是Windows上没有的任何工具)?再次感谢。
omghai2u 2012年

2
我认为Sysinternal工具“第三方”不是来自Microsoft,您不必安装它们。
彼得·汉道夫

抱歉,我正在考虑未默认安装“ 3rd-party”的任何东西。
omghai2u 2012年

彼得 太棒了,谢谢你。非常适合在会话0中启动进程(这意味着您注销后该进程一直运行。)
Daniel James Bryars 2013年

5
第一个命令行是错误的:-sSYSTEM用户身份运行并且不接受参数。也许您-i 0在第一个示例和-s -i 0第二个示例中是要表达的?
jwg 2014年

1

它不会工作。它仅作为系统启动一个过程。

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

MS具有允许将程序作为服务运行的实用程序。它Srvany在Windows 2003 Resource Kit Tools中被称为。

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


0

我有一天偶然发现了该解决方案,但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

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

如果一切顺利,您将收到即将出现的闪烁消息框!转到“查看消息”,您将拥有一个管理员(nt权限\系统)命令提示符,该命令提示符不会因服务启动失败而自动销毁(因此需要使用start命令添加批处理文件)

确实可以,尽管有时第一次尝试不起作用。

我相信这使您只能访问交互式会话0,该会话仅适用于nt权限\系统用户


-2

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


3
欢迎来到超级用户。您的帖子未回答 OP的问题。CMD正常启动不会让您陷入困境Session 0
我说恢复莫妮卡的时间
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.