本文介绍进程控制服务组件的参数。
原始 KB 编号: 296930
总结
可以针对管理功能或故障排除目的手动操作进程控制服务注册表值,这些值存储在以下注册表项中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ProcCon\Parameters
本文介绍了以下组件:
- 进程别名规则
- 进程执行规则
- 进程组执行规则
默认进程执行规则字符串
DfltMgmt:REG_SZ:{F0x0,A0x0,P0x8,L0x0,H0x0,S0x0,T0x0,U0x0,C0x0,M0x0,N0x0}
其中:
F0x0 是用于指示此进程执行规则是否由组管理的默认设置。 如果规则在组管理下,则所有情况下,此值都显示为 F0X800。 设置此值后,将管理此过程的组的文本值名称写入以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ProcCon\Parameters\ProcessRules\your_process_execution_rule_alias_name\
- MemberOf:
- REG_SZ:
- your_process_group_execution_rule_name
A0x0 是处理器相关性的默认设置。 0 值指示未应用关联,并且进程可以在系统中的任何可用处理器上运行。 所有值都采用十六进制格式。 若要手动配置这些值,必须编写使用 API 调用的代码,并且此过程超出了本文的范围。
P0x8 是进程优先级的默认值。 默认为正常优先级。 以下优先级/值映射列出了可用的设置,并且所有值都采用十六进制:
- P0x18 实时
- P0xd High
- 高于普通的 P0xa
- P0x8 普通
- P0x6 低于正常
- P0x4 低
L0x0 是进程执行规则最小工作集的默认设置。 值以十进制字节为单位,转换为十六进制。 例如,可以将 GUI 接口设置为 10,000,其中十进制为 10,240,000。 相应的注册表项值为 L0x9c4000。 GUI 接口中等于或大于 9999999999(或 9.31+TB)的任何条目都会导致“最小工作集必须大于 0 但小于最大工作集。”错误消息发生。 同样,与0x2540BE3FF相等或大于0x2540BE3FF的十六进制注册表项在下次使用 GUI 接口时生成相同的错误消息。
H0x0 是进程执行规则的最大工作集的默认设置。 值以十进制字节为单位,转换为十六进制。 例如,可以将 GUI 接口设置为 10,000,十进制为 10,240,000。 相应的注册表项值为 L0x9c4000。
S0x0、T0x0、U0x0、C0x0、M0x0、N0x0 当前未在进程执行规则说明中使用。
默认进程组执行规则字符串
DfltMgmt:REG_SZ:{F0x0,A0x0,P0x8,L0x0,H0x0,S0x5,T0x0,U0x0,C0x0,M0x0,N0x0}
其中:
F0x0 涉及多个不同的进程控制参数配置。 若要手动配置此值,必须编写使用 API 调用的代码,并且此过程超出了本文的范围。
A0x0、P0x8、L0x0、H0x0。 这些参数的值的计算方式与本文前面的“默认进程执行规则字符串”部分相同。
S0x5 是默认计划类值。 可用值为 0 到 9。 有效值为 S0x0、S0x1、S0x2、.......S0x9。
T0x0 是“按进程应用用户时间限制:”的默认值。 此值以 hh:mm:ss 格式的 GUI 指定。 注册表值采用由操作系统计算的十六进制格式。 若要获取十六进制转换,必须创建基于代码的方法。 下面的代码是示例代码,在编译时,将在给定格式为 0:00:00 的输入时执行转换并输出所需的十六进制值。
Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能,但他们不会修改这些示例以提供新增功能或构建步骤以满足你的特定需要。
有关可用的支持选项以及如何与 Microsoft 联系的详细信息,请访问以下 Microsoft 网站:
输出:
C:\Projects\timecv\Release>timecv Enter time in the following format (hh:mm:ss:) ->2:30:00 Registry value should be 0x14f46b0400
源:
#include "stdio.h" int main(int argc, char* argv[]) { __int64i64=0; intiHour=0,iMinute=0,iSecond=0; printf ("Enter time in the following format (hh:mm:ss:) ->"); scanf ("%i:%i:%i", &iHour,&iMinute,&iSecond); iHour *= 3600; iMinute *= 60; i64=(iHour+iMinute+iSecond); i64*=10000000; printf ("\nRegistry value should be 0x%I64x\n", i64); return 0; }
U0x0 是“应用进程组用户时间限制:”的默认值。 此值的指定和计算方式与上述 T0x0 说明中的值相同。
C0x0 是“应用进程计数限制”的默认值。 这些值是通过转换为十六进制的小数输入值的简单转换创建的。 十进制中的最大数字超过 10 亿个进程。
M0x0 是进程提交的内存限制的默认值。 此值是所需值(以 KB 为单位)的十六进制转换。 例如,如果要使用值 10,000,在 GUI 中,注册表值将为 (10,000*1,024) 或 10,240,000 转换为十六进制值0x9c4000。
N0x0 是进程组提交的内存限制的默认值,其计算方式与前面的进程提交内存限制相同。
注意
进程组执行规则提供四个高级设置选项:
- 当组中没有进程时结束进程组。
- 在未经处理的异常时死亡。
- 无声的分离。
- 分离正常。
无法在注册表中手动编辑这些项目。 必须通过本文未介绍的 API 编程调用来操作这些值。