Где хранятся переменные среды в реестре?
Мне нужно получить доступ к переменной среды удаленно. Для этого я думаю, что лучший способ-это прочитать его из реестра.
где хранятся переменные среды в реестре?
4 ответа:
вот где они хранятся на XP через Server 2012 R2:
Переменные Пользователя
HKEY_CURRENT_USER\Environment
Системные Переменные
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Я понимаю, что это старый, но есть более эффективный способ сделать это в Windows 7. SETX устанавливается по умолчанию и поддерживает подключение к другим системам.
для изменения глобальных переменных среды удаленных систем вы бы использовали
setx /m /s HOSTNAME-GOES-HERE VariableNameGoesHere VariableValueGoesHere
для этого не требуется перезапуск проводника.
У меня всегда были проблемы с этим, я сделал getx.летучая мышь:
::getx %envvar% [\m] ::reads envvar from user enviroment variable and stores it in getxvalue variable ::with \m read system enviroment @SETLOCAL EnableDelayedExpansion @echo OFF @set l_regpath="HKEY_CURRENT_USER\Environment" @if "\m"=="%2" set l_regpath="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ::REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH /t REG_SZ /f /d "%PATH%" ::@REG QUERY %l_regpath% /v %1 /S @FOR /F "tokens=*" %%A IN ('REG QUERY %l_regpath% /v %1 /S') DO ( @ set l_a=%%A @ if NOT "!l_a!"=="!l_a: =!" set l_line=!l_a! ) ::delimiter is four spaces change it to tab \t @set l_line=!l_line! @set l_line=%l_line: = % @set getxvalue= @FOR /F "tokens=3* delims= " %%A IN ("%l_line%") DO ( @ set getxvalue=%%A ) @set getxvalue=!getxvalue! @echo %getxvalue% > getxfile.tmp.txt @ENDLOCAL ::we already used tab as delimiter @FOR /F "delims= " %%A IN (getxfile.tmp.txt) DO ( @set getxvalue=%%A ) @del getxfile.tmp.txt @echo ON
cmd:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" reg query HKEY_CURRENT_USER\Environment
Powershell:
Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" Get-Item HKCU:\Environment
Powershell / .NET: (см. https://msdn.microsoft.com/en-us/library/system.environmentvariabletarget(v=vs. 110).aspx)
[System.Environment]::GetEnvironmentVariables([System.EnvironmentVariableTarget]::Machine) [System.Environment]::GetEnvironmentVariables([System.EnvironmentVariableTarget]::User)