进程控制参数的注册表值
本文介绍过程控制服务组件的参数。
适用于: Windows Server 2012 R2
原始 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 Normal
- P0x6 低于正常
- P0x4 低
L0x0 是进程执行规则的最小工作集的默认设置。 值以转换为十六进制数的十进制字节为单位。 例如,可以将 GUI 接口设置为 10,000,小数为 10,240,000。 相应的注册表项值为 L0x9c4000。 GUI 接口中任何等于或大于 9999999999 (或 9.31+TB) 的条目都会导致“最小工作集必须大于 0 但小于最大工作集”。出现错误消息。 同样,下次使用 GUI 接口时,等于或大于 0x2540BE3FF 的十六进制注册表项会导致相同的错误消息。
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 是“按进程应用用户时间限制:”的默认值。 此值在 GUI 中以 hh:mm:ss 格式指定。 注册表值采用操作系统计算的十六进制格式。 若要获取十六进制转换,必须创建基于代码的方法。 下面的代码是示例代码,在编译时,将执行转换,并在以 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 编程调用来操作这些值。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈