如何以实时优先级启动可执行文件?

6

那么我在Windows 8.1上尝试了这个:

start /low cmd

我希望将cmd进程设置为低优先级。但是当我执行以下操作时:

start /realtime cmd

我以高优先级获得了新的cmd进程。

有没有一种方法可以在不手动设置的情况下实现实时性? 另外,我是否可以通过我的应用程序代码(例如WinApi或其他)来设置所需的优先级?

3个回答

7

当您以管理员身份执行start命令时,它才会工作。

从技术上讲,您需要具备SeIncreaseBasePriorityPrivilege,管理员通常都有这个权限。 如果没有该权限,在我的研究中我没有发现任何相关文档,似乎您将被静默回退到一个适用于调用账户的优先级。

我怀疑Win32也不会有帮助,因为相同的限制肯定也适用。


3

为使CMD或Process Lasso在没有管理员权限的情况下正常工作,需要进行以下更改:

secpol.msc > 本地策略 > 用户权限分配 > 增加调度优先级 > 属性 > 添加用户或组 > 输入“Everyone” > 检查名称 > 确定

我需要解决方案,以启动在后台设置命令优先级的VBS脚本,但我无法以管理员身份打开VBS脚本。


1
@ECHO OFF
ECHO Setting process priority    
wmic process where name="process.exe" CALL setpriority "Realtime"

一种解决方法是以当前用户身份启动进程,然后以管理员身份运行上述批处理文件。

这对我来说没有起作用。命令似乎执行成功,但优先级没有改变,无论其级别如何。(\MACHINE\ROOT\CIMV2:Win32_Process.Handle="7972")->setpriority() 方法执行成功。 输出参数: __PARAMETERS的实例 { ReturnValue = 0; }; - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接