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

我目前正在运行Vista,我想手动完成与我的Windows服务相同的操作。 由于Windows服务在本地系统帐户下运行,我想模拟这种相同的行为。 基本上,我想在本地系统帐户下运行CMD.EXE。

我发现在线信息提示使用DOS任务计划程序AT命令来启动CMD.exe,但是我收到一个Vista警告,“由于安全性增强,此任务将在除外但不交互的时间运行”。 这是一个示例命令:

AT 12:00 /interactive cmd.exe 

另一个解决schemebuild议通过仅启动CMD.exe的服务控制(sc.exe)创build辅助Windows服务。

 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. 

第三个build议是通过计划任务启动CMD.exe。 虽然你可以在不同的账户下运行计划任务,但我不相信本地系统账户就是其中之一。

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

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

虽然我没有亲自testing,但我有充分的理由相信上述的AT COMMAND解决scheme可以在XP,2000和Server 2003上运行。根据我和Bryant的testing,我们发现,同样的方法在Vista或Windows Server 2008 – 最有可能是由于增加的安全性和/交互开关被弃用。

不过,我遇到了这篇文章 ,它演示了SysInternals (它是在2006年7月被微软收购的)中使用的PSTools 。我通过以下方式启动了命令行,突然之间我像魔术一样在本地pipe理帐户下运行:

 psexec -i -s cmd.exe 

PSTools运作良好。 这是一个轻量级的,logging完备的工具,为我的问题提供了一个合适的解决scheme。

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

  1. 从Sysinternals下载psexec.exe 。
  2. 将其放置在C:\驱动器中。
  3. 以标准或pipe理员用户身份login,然后使用以下命令: cd \ 。 这将您置于psexec所在驱动器的根目录中。
  4. 使用以下命令: psexec -i -s cmd.exe其中-i用于交互式,-s用于系统帐户。
  5. 命令完成后,将启动cmd shell。 inputwhoami ; 它会说“系统”
  6. 打开taskmanager。 杀死explorer.exe。
  7. 从提升的命令shelltypesstart explorer.exe
  8. 启动资源pipe理器时,请在开始菜单栏中注意名称“系统”。 现在你可以删除一些在system32目录下的文件,你不能删除的pipe理员,或者你必须努力改变删除这些文件的权限。

试图重命名或删除任何受保护的Windows目录中的系统文件的用户应该知道,所有的Windows文件受DACLS保护,而重命名一个文件,你必须改变所有者,并取代拥有该文件的TrustedInstaller,并使任何用户属于pipe理员组作为文件的所有者,然后尝试更改权限后重命名,它将工作,而当您运行与内核privilages的Windows资源pipe理器有限的networking访问方面的安全原因,它仍然是一个研究课题为了让我回访

在这里find一个答案,似乎通过添加/ k开始到binPath参数来解决问题。 所以这会给你:

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

然而,本说,这并没有为他工作,当我在Windows Server 2008上尝试它时,它创build了本地系统下的cmd.exe进程,但它不是交互式的(我看不到窗口)。

我不认为有一个简单的方法来做你的问题,但我想知道你为什么要这样做? 你只是想看看当你运行你的服务时发生了什么? 似乎你可以使用日志logging来确定发生了什么,而不必作为本地系统运行的exe …

我build议你制定出你的服务真正需要和使用的最小权限集,而不是权限太远的本地系统上下文。 例如, 本地服务 。

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

一个替代的是过程黑客,如果你进入运行…(交互式不适用于安全增强的人,但不会有问题),当打开的箱子把服务放入箱子types,把系统放入用户箱,把C :\ Users \ Windows \ system32 \ cmd.exe离开rest点击确定和boch你有一个cmd的窗口,并作为系统运行现在做自己的其他步骤,因为即时通讯build议你知道他们

使用安全桌面以系统身份运行cmd.exe

我们可以通过连接一个debugging器REG ADD“HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ osk.exe”/ v Debugger / t REG_SZ轻松地通过CMD在Windows XP / Vista / 7 / / d“C:\ windows \ system32 \ cmd.exe”

1.以pipe理员身份运行CMD

2.然后在Elavated CMD REG中使用这个命令添加“HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ osk.exe”/ v Debugger / t REG_SZ / d“C:\ windows \ system32 \ cmd。可执行程序”

3.然后运行OSK屏幕键盘它仍然不会以系统完整性级别运行,如果你检查通过进程探索,但如果你可以在服务会话中使用OSK是的,它将作为NT authroitry系统

所以我有一个想法,你必须在安全桌面上运行它

当UAC提示出现时,以pipe理员身份启动任何文件只需按下Windows键+ U并启动OSK,它将启动CMD,而不是在提升的提示input命令Whoami,您将得到输出NT Authority系统,您可以从系统命令shell启动资源pipe理器input系统configuration文件,但是由于安全原因,您在networking上通过SYSTEM权限可以做些什么,我会在一年前发现它的时候添加更多解释。 简要说明如何发生

在不使用PsExec的情况下在本地系统帐户下运行Cmd.exe。 这种方法运行了之前发现的debugging器陷阱技术,这种技术有其自身的优点,可以用来在debugging器中捕获一些狡猾/恶意蠕虫或恶意软件,并运行其他一些exe来代替暂时的传播或破坏。 这里这个registry键在Windows本地debugging器中屏蔽键盘,并且运行cmd.exe,但是cmd仍然会以Logged on用户权限运行,但是如果我们在session0中运行cmd,我们可以得到系统shell。 所以我们在这里添加另一个想法,我们跨越安全桌面上的CMD记得安全的桌面运行在session0下的系统帐户,我们得到系统shell.so当你运行任何提升你必须回答UAC提示和UAC提示在黑暗的非交互式桌面一旦你看到它,你必须按Windows键+ U,然后selectOSK,你将得到CMD.exe在本地系统权限下运行,还有更多的方式获得本地系统访问CMD

如果您可以编写一个不需要交互的batch file,那么请尝试将该batch file作为服务运行,以便完成需要完成的任务。