If the value parameter is not emptyand the environment variable named by the variable parameter does not exist, the environment variable is created and assigned the contents of value. Solely for the purposes of this operation, value is considered empty if it is null, contains a zero-length string, or contains an initial hexadecimal zero character (0x00).

If variable contains a non-initial hexadecimal zero character, the characters before the zero character are considered the environment variable name and all subsequent characters are ignored.

If value contains a non-initial hexadecimal zero character, the characters before the zero character are assigned to the environment variable and all subsequent characters are ignored.

If value is empty and the environment variable named by variable exists, the environment variable is deleted. If variable does not exist, no error occurs even though the operation cannot be performed. Exercise caution when target is Machine because you can delete an environment variable that affects your entire local machine, not just the current process or user.

If the target parameter is not Process, the environment variable is not automatically copied to the current process.

If target is User, the environment variable is stored in the Windows registry key reserved for the current user. It is also copied to instances of Windows Explorer that are running as the current user. The environment variable is then inherited by any new processes that the user launches from Windows Explorer.

Similarly, if target is Machine, the environment variable is stored in the Windows registry key reserved for the local computer. It is also copied to all instances of Windows Explorer. The environment variable is then inherited by any new processes that are launched from Windows Explorer.

If target is User or Machine, other applications are notified of the set operation by a Windows WM_SETTINGCHANGE message.

If target is User or Machine, it is recommended that the length of value be less than 2048 characters.

The following code example creates environment variables for the Process, User, and Machine targets, checks whether the operating system registry contains the User and Machine environment variables, then deletes the environment variables.