4.7 The Control Descriptor

Two operations are not about any one service: shutting the system down, and re-reading the configuration. They are checked against peinit's own descriptor, stored at Machine\System\Init\ControlSecurity as a binary value.

4.7.1 Access rights #

RightBitGrants
SYSTEM_SHUTDOWN0x0001Initiate poweroff, reboot or halt.
SYSTEM_RELOAD_CONFIG0x0002Re-read all definitions from the registry.

The generic mapping:

Generic rightMaps to
GENERIC_READnothing
GENERIC_WRITESYSTEM_RELOAD_CONFIG
GENERIC_EXECUTESYSTEM_SHUTDOWN
GENERIC_ALLboth

GENERIC_READ maps to nothing because there is nothing to read: the control descriptor governs two actions and no queries. A grant of GENERIC_READ on it is not an error, it simply conveys no access.

4.7.2 The default #

Absent a value in the registry, peinit applies:

O:SY G:BA D:(A;;0x0003;;;SY)(A;;0x0003;;;BA)

SYSTEM and Administrators both get shutdown and reload-config. Unlike the ServiceSecurity default, this one is symmetric — an administrator who can stop services one at a time can already stop the system, so withholding shutdown would be theatre.

4.7.3 Loading #

peinit loads the descriptor during Phase 2 boot and hot-reloads it on registry change notification, on the same path as the service descriptors. Until it is loaded — during Phase 1 and the early part of Phase 2 — the built-in default applies, which matters because the control socket exists from Phase 1 infrastructure setup onwards.

Edit this page