Установка Environemnt Type в reg_expand_sz с использованием powershell

Я застрял в проблеме. Я пытаюсь установить переменные среды пользователя с помощью PowerShell:

[Environment]::SetEnvironmentVariable($key,$value,'User')

Но когда я смотрю в реестр, я вижу, что новая запись имеет тип REG_SZ,

Я хотел бы, чтобы это было типа REG_EXPAND_SZ,

Может кто-нибудь помочь мне с этой проблемой?

Спасибо

2 ответа

Решение

Используйте пространство имен Microsoft.Win32 для методов Реестра. Чтобы установить тип данных, используйте перечисление RegistryValueKind. Вот так,

[Microsoft.Win32.Registry]::SetValue("HKEY_CURRENT_USER\Environment","MyKey","1",[Microsoft.Win32.RegistryValueKind]::ExpandString)

Пользовательские переменные находятся в HKEY_CURRENT_USER\Environment

Системные переменные находятся в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Set-ItemProperty HKCU:\Environment $key $value -Type ExpandString

Или в гольф

sp hkcu:environment $key $value -t e

Set-ItemProperty устанавливает значение реестра в виде строки в некоторых системах вместо DWord, почему?

Другие вопросы по тегам