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

Windows services 如何在本地系统帐户下运行CMD.exe?,windows-services,user-accounts,Windows Services,User Accounts,我目前正在运行Vista,我想手动完成与Windows服务相同的操作。因为Windows服务是在本地系统帐户下运行的,所以我想模拟同样的行为。基本上,我想在本地系统帐户下运行CMD.EXE 我在网上找到了建议使用DOS任务调度器AT命令启动CMD.exe的信息,但我收到了一条Vista警告,“由于安全性增强,此任务将在除此之外的时间运行,但不会以交互方式运行。”下面是一个示例命令: AT 12:00 /interactive cmd.exe 另一个解决方案建议通过服务控件(sc.exe)创建辅

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

我在网上找到了建议使用DOS任务调度器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,但我认为我遇到了与运行计划任务时相同的限制

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

找到了一个答案,通过在binPath参数中添加/k start似乎可以解决问题。因此,这将给你:

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

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


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

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

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


交互式服务在Windows Vista和Windows Server 2008上不再工作,或者至少不再显示UI,原因是。

虽然我没有亲自测试,但我有充分的理由相信上述at命令解决方案将适用于XP、2000和Server 2003。根据my和Bryant的测试,我们发现相同的方法不适用于Vista或Windows Server 2008——很可能是由于增加了安全性和/交互开关被弃用

然而,我遇到了这个演示了from(于2006年7月被微软收购)的使用。我通过以下方式启动了命令行,突然间我像magic一样在本地管理员帐户下运行:

psexec -i -s cmd.exe
PSTools运行良好。这是一套轻量级的、有良好文档记录的工具,为我的问题提供了适当的解决方案


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

另一种方法是,如果您以。。。(对于有安全增强功能的人来说,交互式不起作用,但这并不重要),当盒子打开时,将服务投入使用 框类型并将系统放入用户框并放入C:\Users\Windows\system32\cmd.exe离开其余部分单击“确定”并单击“取消”您已经有一个带有cmd的窗口,并作为系统运行,现在请自己执行其他步骤,因为我建议您了解它们

  • 将它放在您的C:\驱动器中
  • 以标准用户或管理员用户身份登录,并使用以下命令:
    cd\
    。这会将您置于驱动器的根目录中,psexec位于该目录中
  • 使用以下命令:
    psexec-i-s cmd.exe
  • 命令完成后,将启动cmd shell。键入
    whoami
    ;它会说“系统”
  • 打开taskmanager.Kill explorer.exe
  • 从提升的命令外壳类型
    start explorer.exe
  • 启动资源管理器时,请注意“开始”菜单栏中的“系统”名称。现在,您可以删除system32目录中的一些文件,这些文件作为管理员无法删除,或者作为管理员,您必须尝试更改权限以删除这些文件
  • 尝试重命名或删除windows任何受保护目录中的系统文件的用户应该知道,所有windows文件都受DACL保护。重命名文件时,您必须更改所有者并替换拥有该文件的TrustedInstaller,使任何用户都像属于管理员组的用户一样成为文件的所有者,然后尝试重命名it更改权限后,它将起作用,当您使用内核权限运行windows资源管理器时,出于安全原因,您在网络访问方面受到了一定的限制,对于我来说,使用Secure Desktop运行
    cmd.exe
    作为
    系统
    
    通过附加调试器,我们可以在Windows XP/Vista/7/8.1中通过
    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"
    
  • 以管理员身份运行
    CMD

  • 然后在下列情况下使用此命令:

     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"
    
  • 然后运行
    osk
    (在Screenkeyboard上)。如果您通过process explorer进行检查,它仍然不会以系统完整性级别运行,但如果您可以在服务会话中使用osk,它将以
    NT Authority\system

  • 所以我想你必须在安全桌面上运行它

    以管理员身份启动任何文件。当UAC提示出现时,只需按Win+U并启动
    OSK
    ,它将启动
    CMD
    。然后在提升的提示中,键入
    whoami
    ,您将获得
    NT Authority\System
    。然后,您可以从系统命令行启动资源管理器并使用系统配置文件,