如何在本地系统帐户下运行CMD.exe?


144

我当前正在运行Vista,我想手动完成与Windows服务相同的操作。由于Windows服务在“本地系统帐户”下运行,因此我想模仿同样的行为。基本上,我想在本地系统帐户下运行CMD.EXE。

我在网上找到了建议使用DOS Task Scheduler AT命令启动CMD.exe的信息,但是我收到了Vista警告,“由于增强了安全性,该任务将在当时运行,但不能交互式运行。” 这是一个示例命令:

AT 12:00 /interactive cmd.exe

另一个解决方案建议通过服务控制(sc.exe)创建辅助Windows服务,该服务仅启动CMD.exe。

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

在这种情况下,服务无法启动,并导致以下错误消息:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

第三个建议是通过计划任务启动CMD.exe。尽管您可以在各种帐户下运行计划的任务,但我不相信本地系统帐户就是其中之一。

我也尝试过使用Runas,但是认为我遇到了与运行计划任务时发现的相同限制。

到目前为止,我的每一次尝试都以失败告终。有什么建议?

Answers:


221

尽管我尚未亲自测试,但我有充分的理由相信上述AT COMMAND解决方案将适用于XP,2000和Server2003。根据我和科比的测试,我们发现相同的方法不适用于Vista或Windows Server 2008-最有可能是由于增加了安全性以及不赞成使用/ interactive开关。

但是,我碰到了这篇文章这表明使用PSToolsSysinternals的(这是由微软于7月收购,2006年),我公司推出通过以下,忽然我也下了本地管理员帐户下运行似幻的命令行:

psexec -i -s cmd.exe

PSTools运作良好。它是一套轻量级,文档齐全的工具,可以为我的问题提供适当的解决方案。

非常感谢那些提供帮助的人。


11
通过-d添加,我会更好地喜欢它,以便我可以继续使用从中启动它的控制台。
SamB

1
我刚刚在Vista x64上进行了尝试,并获得“在...上运行的PsExec服务是不兼容的版本”。直接从\\ live.sysinternals.com \ tools \ psexec和最新的二进制文件进行了尝试。似乎没有x64版本
-ZXX

52
  1. 从Sysinternals下载psexec.exe
  2. 将其放在您的C:\驱动器中。
  3. 以标准或管理员用户身份登录,并使用以下命令: cd \。这会将您置于psexec所在驱动器的根目录中。
  4. 使用以下命令: psexec -i -s cmd.exe -i用于交互,-s用于系统帐户。
  5. 命令完成后,将启动cmd shell。类型whoami ; 它会说“系统”
  6. 打开任务管理器。杀死explorer.exe。
  7. 从提升的命令外壳类型 start explorer.exe
  8. 启动资源管理器后,请注意开始菜单栏中的“系统”名称。现在,您可以删除system32目录中的某些文件,这些文件作为admin您无法删除,或者作为admin您将不得不尝试更改权限以删除这些文件。

尝试重命名或删除Windows任何受保护目录中的系统文件的用户应知道所有Windows文件均受DACLS保护,同时重命名文件时,您必须更改所有者并替换拥有该文件的TrustedInstaller,并使任何用户都像作为文件所有者属于管理员组,然后尝试更改权限后重命名它,它将起作用,并且在运行带有内核特权的Windows资源管理器时,出于安全原因,您在网络访问方面受到一定限制,但这仍然是一个研究主题让我重新获得访问权限


我使用此技巧,经常以提升用户的身份启动资源管理器。特别是在通过VNC连接到PC时,例如,需要设置网络设置的地方。从我+1
TPAKTOPA 2014年

此技巧现在似乎无效。我的操作系统是Windows 7 SP1。我已经开始在开始菜单栏中看到“系统”。但是仍然在重命名system32文件夹中的文件时,它说权限被拒绝。现在,system32文件夹由TrustedInstaller拥有,甚至本地系统帐户也仅具有特殊权限。
韶华李

如果尝试重命名或删除TrustedInstaller拥有的任何受保护Windows目录中的任何文件,则当前用户必须通过更改权限来拥有该文件,然后可以重命名或删除它,这通常用于删除slmgr。 exe和其他系统文件可无限制地访问Windows的试用版,无需为此付费
乌鸦2015年

10

在这里找到了一个答案,似乎可以通过在binPath参数中添加/ k start来解决问题。这样就可以给您:

sc create testsvc binpath= "cmd /K start" type= own type= interact

但是,本说对他不起作用,当我在Windows Server 2008上尝试该操作时,它确实在本地系统下创建了cmd.exe进程,但是它不是交互式的(我看不到窗口)。

我认为没有简单的方法可以完成您的要求,但是我想知道您为什么要这么做?您是否只是在尝试查看运行服务时发生的情况?似乎您可以只使用日志记录来确定正在发生的事情,而不必将exe作为本地系统运行...


嗨,科比。该解决方案实质上是在问题中概述的。它实际上对您有用吗?这对我来说是失败的。谢谢。
本·格里斯沃尔德

布莱恩特,我有一个服务,可以管理另一个组件的安装和卸载。如果我的服务无法完成任务,我希望给我们的支持小组一种“强制”卸载组件的简便方法。在测试时,我也希望能够“强制”卸载。谢谢你的帮助..
本·格里斯沃尔德

1
@Ben:您是否将服务“交互式服务检测”的启动类型设置为“手动”或“已禁用”?
Hello71 2010年

1
若要允许Server 2012的交互式服务,HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices需要设置为0(默认值1)
Ivan Chau


6

我建议您计算出服务真正需要的最低权限集,并使用它,而不是过于特权的本地系统上下文。例如,本地服务

由于会话0的隔离,交互式服务在Windows Vista和Windows Server 2008上不再起作用-或至少不再显示UI 。


4
迈克,感谢您的回复。尽管我同意您的建议,并且我认为每个人都会从您的回答中受益,但我不相信您已经回答了这个问题。
本·格里斯沃尔德

@Ben Griswold:但是,他确实指出了导致Vista旧方法失败的原因。+1。
SamB

1
问题是“如何在本地系统帐户下运行CMD.exe?”
Jaco Pretorius

2
@SamB,这就是注释的意思,当您有贡献的内容实际上不是答案时
Synetech

6

使用安全桌面运行cmd.exesystem

CMD通过附加调试器,我们可以在Windows XP / Vista / 7 / 8.1中轻松获得内核访问权限:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. CMD以管理员身份运行

  2. 然后在“提升”中使用此命令:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. 然后运行osk(屏幕键盘)。如果您通过进程资源管理器进行检查,它仍然不能与系统完整性级别一起运行,但是如果可以在服务会话中使用OSK,它将以NT Authority\SYSTEM

因此我想到您必须在Secure Desktop上运行它。

以管理员身份启动任何文件。当出现UAC提示时,只需按Win+ U并启动OSK,它将开始启动CMD。然后在提升的提示下,键入whoami,您将得到NT Authority\System。此后,您可以从系统命令外壳启动Explorer并使用系统配置文件,但是出于安全原因,通过SYSTEM特权可以在网络上执行的操作受到了一定的限制。一年前,我会在后面添加更多说明。

简要说明如何发生

Cmd.exe在不使用的情况下在本地系统帐户下运行PsExec。此方法运行的是较早发现的Debugger Trap技术,它有其自身的优势,它可用于在调试器中捕获一些狡猾/恶意的蠕虫或恶意软件,并运行其他一些exe来阻止传播或暂时破坏。在这里,此注册表项将Windows本机调试器中的屏幕键盘困住并改为运行cmd.exe,但cmd仍将以“登录用户”权限运行,但是,如果我们在session0中运行cmd,则可以获得系统外壳。因此,我们在此处添加了另一个想法,即跨安全桌面上的cmd记住安全桌面在系统帐户下的会话0中运行,然后获得系统外壳。因此,无论何时以高架运行任何东西,都必须在黑暗的非交互式桌面上回答UAC提示和UAC提示,一旦看到它,则必须按Win+U然后选择OSK您将CMD.exe在“本地系统”特权下运行。还有更多方法可以通过CMD


ya还有更多运行cmd的方法,如NT特权提升
乌鸦2015年

很好 非常好。我讨厌依靠第三者的附加组件来完成工作。这是超级快速和容易的。也永久存在:-)唯一的问题是,您必须在UAC窗口中运行所有命令,并且仅打开某些应用程序。例如,Explorer.exe没有打开。我想尝试是否有另一种方式来触发此操作。我希望能够在本机Windows环境中运行其他应用程序,而无需UAC限制某些应用程序。乌鸦很棒!
科纳林(KonaRin)

3

一个替代方法是Process hacker,如果您以...的身份运行(交互式功能不适用于具有安全性增强功能的人员,但那无关紧要),当打开框时,将Service放入框类型,将SYSTEM放入用户框,然后将C :\ Users \ Windows \ system32 \ cmd.exe剩下的单击确定,然后打开带有cmd的窗口并以系统身份运行,现在自己做其他步骤,因为我建议您了解它们


2

还有另一种方式。有一个名为PowerRun的程序,它允许运行提升的cmd。即使具有TrustedInstaller权限。它允许控制台和GUI命令。


1

如果您可以编写不需要交互的批处理文件,请尝试将该批处理文件作为服务运行,以完成需要做的事情。


0

我使用RunAsTi实用程序作为TrustedInstaller(高特权)运行。即使在Windows的恢复模式(通过输入Shift+ 进入的模式)下,也可以使用该实用程序Restartpsexec实用程序在此不起作用。但是,你需要你的加入C:\WindowsC:\Windows\System32(不X:\WindowsX:\Windows\System32)路径的PATH环境变量,否则RunAsTi不会恢复模式工作,它只会打印:引用被分配给调用者不是所有的特权或用户组:SeImpersonateName AdjustTokenPrivileges


0

使用任务计划程序,使用/ add:/ user:和/ pass的适当参数来计划在SYSTEM下运行的CMDKEY的运行。

无需安装任何东西。

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.