3.1.1.5 Values

Registry values consist of a name and data pair. Zero or more values are associated with each registry key. The name of each value is a Unicode string and is unique within the set of values associated with a given key.

The data portion of the value has a value type that is associated with it to represent the type of data being stored. Each value type (REG_VALUE_TYPE) is represented by a DWORD, and the Data Store MUST support the following value types.

 Value

 Type

0

No defined value type.

1

A Unicode null-terminated string.

2

A Unicode null-terminated string that contains unexpanded references to environment variables (for example, "%PATH%").

3

Binary data in any form.

4

A 32-bit number in little-endian format.

5

A 32-bit number in big-endian format.

7

A sequence of Unicode null-terminated strings, terminated by an empty string (\0).

The following is an example: String1\0String2\0String3\0LastString\0\0.

The first \0 terminates the first string, the second to the last \0 terminates the last string, and the final \0 terminates the sequence. Note that the final terminator MUST be factored into the length of the string.

11

A 64-bit number in little-endian format.

Each value also MUST have an index that is associated with it. Indices MUST be zero-based. If a key has N values that are associated with it, the values have indices ranging from 0 to (N–1). However, the ordering of the values and its associated indices is implementation-specific.

If a value name is empty (zero length), the value is referred to as the Default Value of the associated key. As value names are unique within the set of values associated with a given key, there can be at most one Default Value for a given key. Any Unicode character can be used in the name of a value.