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

Windows 批处理文件:以高优先级启动,cmd被阻止,windows,batch-file,vbscript,cmd,Windows,Batch File,Vbscript,Cmd,我的目标是:在不打开任务管理器的情况下以高优先级运行批处理文件 问题出在学校cmd.exe被阻止(由于限制),但我可以通过Windows资源管理器或使用VBScript函数。运行或。ShellExecute。当我使用时,它可以工作。运行“G:\test.bat”,但不运行。运行“cmd/c G:\test.bat”。当我在批处理文件中使用start函数启动另一个批处理文件时,它不起作用。在这种情况下,我得到一个类似于“此程序被策略阻止”的错误。当我从“Start>run>cmd”运行cmd.ex

我的目标是:在不打开任务管理器的情况下以高优先级运行批处理文件

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


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

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

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

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

WinNT中的command.com将所有命令传递给cmd.exe执行。启动命令并键入

此外,没有什么可以阻止您使用命令提示符,它只是在每个命令之后退出。做一个dir

cmd /k dir
它将执行dir操作,然后退出

所以

这是对政策的描述,我用粗体字表示

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

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

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

谨慎

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


cmd /k start /high notepad