我当前正在运行Vista,我想手动完成与我的Windows服务相同的操作。由于Windows服务是在本地系统帐户下运行的,因此我想模拟同样的行为。基本上,我希望在本地系统帐户下运行CMD.EXE。
我在网上找到了一些建议使用DOS Task Scheduler AT命令加载CMD.exe的信息,但是我收到了一个Vista警告,“由于安全增强,这个任务将在例外的时间运行,但不是交互的。”下面是一个命令示例:
AT 12:00 /interactive cmd.exe
另一种解决方案建议通过仅启动CMD.exe的服务控制(sc.exe)创建辅助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.
第三个建议是通过计划任务启动CMD.exe。虽然您可以在不同的帐户下运行计划任务,但我不认为本地系统帐户是其中之一。
我也尝试过使用Runas,但我认为我遇到了与运行计划任务时相同的限制。
到目前为止,我的每一次尝试都以失败告终。有什么建议吗?
发布于 2008-09-17 00:36:37
虽然我没有亲自测试过,但我有充分的理由相信上述AT命令解决方案将适用于XP、2000和Server2003。根据my和Bryant的测试,我们发现同样的方法在Vista或Windows Server2008上不起作用--很可能是因为增加了安全性和/interactive开关被弃用。
然而,我偶然发现了这个article,它演示了来自SysInternals (2006年7月被微软收购)的PSTools的用法。我通过以下命令行启动了命令行,突然我以本地管理员帐户运行,就像变魔术一样:
psexec -i -s cmd.exe
PSTools运行得很好。这是一套轻量级的、文档齐全的工具,为我的问题提供了一个合适的解决方案。
非常感谢那些提供帮助的人。
发布于 2008-09-16 21:56:27
找到了一个答案here,它似乎可以通过将/k start添加到binPath参数来解决问题。所以这会给你带来:
sc create testsvc binpath= "cmd /K start" type= own type= interact
然而,本说这对他不起作用,当我在Windows Server2008上尝试时,它确实在本地系统下创建了cmd.exe进程,但它不是交互式的(我看不到窗口)。
我不认为有一个简单的方法来做你所要求的,但我想知道你为什么要这样做?你只是想看看在你运行你的服务时发生了什么吗?似乎您可以只使用日志记录来确定发生了什么,而不必将exe作为本地系统运行……
发布于 2011-02-21 16:24:52
另一种替代方案是进程黑客,如果你进入运行方式...(交互式对具有安全增强功能的人不起作用,但这无关紧要)当对话框打开时,将服务放入框中,将系统放入用户框中,剩下的放入C:\Users\Windows\system32\cmd.exe,单击ok,然后单击boch,您将看到一个带有cmd的窗口,并以系统身份运行,现在自己执行其他步骤,因为我建议您了解它们
https://stackoverflow.com/questions/77528
复制相似问题