These docs are under active development.
On this page
reference 9 min read

Registry key reference

This page is the reference catalogue for everything peinit reads from or writes to the registry: the full service-definition schema with types and defaults, and every key peinit touches outside the service definitions. For the meaning of each item, follow the link in its row; this page is for looking up a type, a default, or a path.

ℹ Note
The registry stores a value's type but not its meaning — that is what regman and these docs are for. A value peinit accepts at write time can still be rejected when peinit reads and validates it; this page lists the schema, not the validation rules (those live on each field's page).

Registry value types

Service definition fields map onto registry value types as follows:

Schema type Registry type Is
string REG_SZ A UTF-8 string.
multi_string REG_MULTI_SZ An ordered list of strings.
dword REG_DWORD A 32-bit unsigned integer.
binary REG_BINARY A raw byte sequence.
(timestamp) REG_QWORD A 64-bit value — used for timer last-run timestamps.

The service definition schema

Every service is a key under Machine\System\Services\<name>; these are the values inside it. Only ImagePath is required. Fields are grouped by purpose; for full semantics see Defining a service and the linked pages.

Execution — see The execution environment

Field Type Default Meaning
ImagePath string (required) Absolute path to the service binary.
Arguments multi_string Command-line arguments.
WorkingDirectory string / Working directory (non-empty absolute path).
Environment multi_string KEY=VALUE pairs added to the environment.
RuntimeDirectories multi_string Directories created directly under /run just before the main process starts, each secured for SYSTEM, Administrators, and the service's own SID.
LimitNOFILE dword RLIMIT_NOFILE.
LimitCORE dword RLIMIT_CORE, in bytes.
ℹ Note
Each RuntimeDirectories entry is a plain relative name — just foo, never a path — and must not contain /, \, ., .., NUL, or control characters. For an entry foo, peinit creates /run/foo immediately before launching the main process and applies a Peios file security descriptor granting full access to SYSTEM, Administrators, and this service's own SID. If the directory can't be created or the descriptor can't be applied, the start fails with ParentSetupFailure. peinit does not remove these directories when the service stops — /run is a boot-scoped tmpfs that the next boot clears for you.

Type and readiness — see Simple and Oneshot services

Field Type Default Meaning
Type dword 0 (Simple) 0 = Simple, 1 = Oneshot.
Readiness dword 0 (Notify) 0 = Notify (READY=1), 1 = Alive. Ignored for Oneshot.
RemainAfterExit dword 0 Oneshot only — stay Completed after a successful exit.
SuccessExitCodes multi_string Non-zero exit codes treated as success (each 0–255).

Activation — see Triggers and timers

Field Type Default Meaning
Triggers multi_string boot and/or timer:<schedule>. Absent = demand-only.
Disabled dword 0 If 1, triggers must not activate the service.
SafeMode dword 0 If 1, attempt to start in Safe mode. Critical implies SafeMode.
Conditions multi_string Start-time checks; a failure skips the service.
Asserts multi_string Start-time checks; a failure fails the service.
PreStartCheckTimeout dword 5 Seconds allowed for the helper that evaluates filesystem Conditions/Asserts; if it overruns, it is killed and the check counts as not satisfied (a Condition skips, an Assert fails).
TimerPersistent dword 1 Catch up a missed timer run after a reboot.
TimerJitter dword 0 Maximum random delay (seconds) added to each firing.

Identity — see Service identity and privileges

Field Type Default Meaning
Identity string LocalService Principal name or SID for the service token.
RequiredPrivileges multi_string Privilege allow-list; all others are removed from the token.
HookIdentity string (service's Identity) Identity for ExecStartPre/ExecStartPost.

Dependencies — see Dependencies and ordering

Field Type Default Meaning
Requires multi_string Hard dependencies.
Wants multi_string Soft dependencies.
BindsTo multi_string Runtime coupling.
Conflicts multi_string Mutual exclusion.
OnFailure string Service to start when this one enters Failed.

Supervision and health — see Keeping services running

Field Type Default Meaning
ErrorControl dword 0 (Normal) 0 = Normal, 1 = Critical (sync + reboot on irrecoverable failure).
RestartPolicy dword 1 (OnFailure) 0 = Never, 1 = OnFailure, 2 = Always.
RestartMaxRetries dword 5 Consecutive restarts before Failed.
RestartWindow dword 120 Seconds of Active health that resets the restart counter.
RestartDelay dword 1 Backoff base (doubles per failure, capped at 60).
HealthCheck string Periodic health-check command.
HealthCheckInterval dword 30 Seconds between health checks.
HealthCheckTimeout dword 5 Seconds before a check is killed and failed.
HealthCheckRetries dword 3 Consecutive failures before unhealthy.
WatchdogTimeout dword 0 Seconds between expected WATCHDOG=1 pings; 0 disables.

Transition phases — see The service lifecycle and Controlling services

Field Type Default Meaning
ExecStartPre multi_string Commands run before the binary (sequential; any failure aborts start).
ExecStartPost multi_string Commands run after readiness / successful exit (failure logged, not fatal).
ExecReload string — (SIGHUP) Reload command, or signal:<NAME>.
StartTimeout dword 30 Seconds for the whole start sequence.
StopTimeout dword 10 Seconds between SIGTERM and SIGKILL.

Notify, fds, security, metadata

Field Type Default Meaning
NotifyAccess dword 0 (Main) Who may send sd_notify (only Main is supported).
FdStoreMax dword 0 Max fds in the fd store; 0 disables it.
ServiceSecurity binary inherit parent Descriptor controlling who may manage the service.
DisplayName string Human-readable name for status display.
Description string Description of the service.

Service definition keys

Key Type Purpose See
Machine\System\Services\ (parent key) Parent of all service definitions; each child key is a service. Defining a service
Machine\System\Services\SchemaVersion dword Schema version guard (currently 1). Defining a service
Machine\System\Services\<name>\LastTimerRun REG_QWORD Last-run timestamp for a single-trigger persistent timer. Written by peinit. Triggers and timers
Machine\System\Services\<name>\TimerState\ (subkey) Per-trigger last-run timestamps for multi-trigger services. Each value is named by the percent-encoded schedule string and holds a REG_QWORD. Triggers and timers

Boot configuration

Under Machine\System\Boot\:

Key Type Default Purpose See
MaxParallelStarts dword (> 0) 10 Maximum services starting concurrently. Missing → default; zero/invalid → Recovery. Boot and boot modes
BootSuccessGrace dword 30 Seconds a Critical service must hold a satisfying state before boot is successful. Boot and boot modes
ShutdownTimeout dword 90 Maximum seconds for the whole graceful shutdown. Shutdown

Operational parameters

Under Machine\System\Init\:

Key Type Default Purpose See
ControlSecurity binary SYSTEM full; Administrators shutdown + reload-config Descriptor for system-level control operations. Who can manage a service
MaxControlConnections dword 32 Maximum concurrent control-socket connections. Controlling services
MaxRequestSize dword 65536 Maximum control-socket request size (bytes). Controlling services
ConnectionTimeout dword 30 Seconds before an idle control connection is closed. Controlling services
MaxLogLineLength dword 8192 Maximum bytes per service output line before truncation. Service output and logging
MaxLogBufferPerService dword 65536 Maximum bytes buffered per service pipe before back-pressure. Service output and logging
EnvVars\ (parent key) empty Default environment variables injected into Phase 2 services (value name = variable, REG_SZ data = value). The descriptor here is security-critical. The execution environment
ProvisionedPaths\ (parent key) empty Boot-time path provisioning: each child key names one directory or file that peinit creates and secures after registryd starts and before Phase 2 — the registry-backed equivalent of tmpfiles.d. Boot and boot modes
ProvisionedPaths\<name>\Kind string (required) directory or file — what to create at Path. Boot and boot modes
ProvisionedPaths\<name>\Path string (required) Absolute path to create or verify. Boot and boot modes
ProvisionedPaths\<name>\Security binary SYSTEM + Administrators full, users read/traverse Peios file security descriptor to apply to the object. Boot and boot modes
ProvisionedPaths\<name>\Required dword 0 If 1, a failure to provision this entry sends boot to Recovery mode before Phase 2 starts. Boot and boot modes
ℹ Note
A few ProvisionedPaths rules worth knowing before you rely on them: Kind=file never truncates an existing file (it only makes sure the file is present), and peinit does not create missing parent directories for you — define each directory you need as its own entry, or depend on the package that owns the parent. A malformed entry is logged and skipped rather than blocking boot; only an entry you mark Required=1 can send boot to Recovery mode, and only when it genuinely can't be created or secured.

Keys peinit reads from other subsystems

Key Type Purpose See
Machine\System\eventd\LogSocketPath string Path of eventd's log datagram socket, where peinit forwards service output. Service output and logging

Where to start

For how these fields combine into a working definition and when changes take effect, read Defining a service.

To look up the meaning, valid range, and effect-timing of any key on a live system, use regman.