Ho bisogno di accedere a una variabile di ambiente in remoto. Per fare ciò penso che il modo migliore sia leggerlo dal registro.Dove sono memorizzate le variabili d'ambiente nel registro?
Dove sono memorizzate le variabili d'ambiente nel registro?
Ho bisogno di accedere a una variabile di ambiente in remoto. Per fare ciò penso che il modo migliore sia leggerlo dal registro.Dove sono memorizzate le variabili d'ambiente nel registro?
Dove sono memorizzate le variabili d'ambiente nel registro?
Ecco dove questi sono memorizzati su XP tramite Server 2012 R2:
Variabili utente
HKEY_CURRENT_USER\Environment
Variabili di sistema
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Mi rendo conto che è vecchio ma c'è un più efficiente come farlo in Windows 7. SETX è installato di default e supporta la connessione ad altri sistemi.
modificare sistemi remoti variabili d'ambiente globali si usa
setx /m /s HOSTNAME-GOES-HERE VariableNameGoesHere VariableValueGoesHere
Questo non richiede il riavvio esploratore.
Prestare attenzione a questo, come setx tronca tutto dopo i 1024 caratteri !!! https://superuser.com/questions/387619/overcoming-the-1024-character-limit-with-setx – WalyKu
ho sempre avuto problemi con questo, ho fatto una getx.bat:
::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:
gi "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
gi HKCU:\Environment
PowerShell/NET: (vedi 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)
Ricordarsi di riavviare il sistema per rendere effettive le modifiche. – 0x6B6F77616C74
Non è necessario riavviare. Basta uccidere Explorer.exe e riportarlo in vita. È il processo genitore per es. cmd.exe (quando avviato dal menu Start) –
Che ne dici di altri processi, come IIS? Immagino che Explorer.exe non sia il genitore di quelli, quindi sarebbe necessario un riavvio? – Colin