批处理文件:以高优先级启动,cmd被阻止

时间:2014-10-23 20:06:34

标签: windows batch-file vbscript cmd

我的目标:以高优先级运行批处理文件,而无需打开任务管理器。

问题是在学校cmd.exe被阻止(由于限制),但我可以通过Windows资源管理器或使用VBScript函数.Run.ShellExecute运行批处理文件。它在我使用.Run "G:\test.bat"但不是.Run "cmd /c G:\test.bat"时有效。当我在批处理文件中使用start函数启动另一个批处理文件时,它不起作用。在这种情况下,我收到类似于“此程序被策略阻止”的错误。当我从“开始>运行> cmd”运行cmd.exe时出现同样的错误。

因此,当我从VBScript运行批处理文件时,Windows不会检测到它正在使用被阻止的cmd。我想知道是否有一个VBScript函数启动一个具有高优先级的程序。也许它会在另一个文件扩展名和另一种语言中。或者,如果你有其他想法发布它。

2 个答案:

答案 0 :(得分:0)

您应该能够使用WMI来完成此任务。您需要将Win32_ProcessStartup类与Win32_Process结合使用来定义启动参数并运行批处理文件。使用PriorityClass类的Win32_ProcessStartup属性为您生成的进程指定优先级。

Const PRIORITY_CLASS_HIGH = 128

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")

Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = PRIORITY_CLASS_HIGH

Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
objProcess.Create "G:\test.bat", null, objConfig, intProcessID

答案 1 :(得分:0)

在32位窗口上,如果cmd被阻止,command.com仍会运行。你很幸运,管理员没有在禁用cmd的对话框中勾选禁用bat文件的复选框。

WinNT中的

command.com将所有命令传递给cmd.exe以供执行。启动命令并输入。

也没有什么能阻止你使用命令提示符,它只是在每个命令后退出。做一个目录

cmd /k dir

它会做一个dir然后退出。

所以

cmd /k start /high notepad

这是政策的描述,我用粗体表达某些词语。

禁用命令提示符 用户配置\管理模板\系统

描述 阻止用户运行交互式命令提示符Cmd.exe。此策略还确定批处理文件(.cmd和.bat)是否可以在计算机上运行。

如果您启用此策略并且用户尝试打开命令窗口,系统将显示一条消息,说明策略阻止了该操作。

注意

如果计算机使用登录,注销,启动或关闭批处理文件脚本,或者对于使用终端服务的用户,请勿阻止计算机运行批处理文件。


相关问题