Tôi cần truy cập vào biến môi trường từ xa. Để làm điều này tôi nghĩ cách tốt nhất là đọc nó từ registry.Biến môi trường được lưu trong sổ đăng ký ở đâu?
Biến môi trường được lưu trữ trong sổ đăng ký ở đâu?
Tôi cần truy cập vào biến môi trường từ xa. Để làm điều này tôi nghĩ cách tốt nhất là đọc nó từ registry.Biến môi trường được lưu trong sổ đăng ký ở đâu?
Biến môi trường được lưu trữ trong sổ đăng ký ở đâu?
Dưới đây là nơi chúng được lưu trữ trên XP thông qua Server 2012 R2:
biến tài
HKEY_CURRENT_USER\Environment
System Variables
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Tôi nhận ra điều này là cũ nhưng có một hiệu quả hơn cách thực hiện điều này trong Windows 7. SETX được cài đặt theo mặc định và hỗ trợ kết nối với các hệ thống khác.
Để sửa đổi một hệ thống từ xa biến môi trường toàn cầu, bạn sẽ sử dụng
setx /m /s HOSTNAME-GOES-HERE VariableNameGoesHere VariableValueGoesHere
này không yêu cầu khởi động lại thám hiểm.
Hãy cẩn thận với điều này, như setx cắt ngắn mọi thứ sau 1024 charachters !!! https://superuser.com/questions/387619/overcoming-the-1024-character-limit-with-setx – WalyKu
tôi luôn luôn có vấn đề với điều đó, tôi đã thực hiện một 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: (xem 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)
Hãy nhớ khởi động lại hệ thống của bạn để thực hiện thay đổi. – 0x6B6F77616C74
Bạn không cần phải khởi động lại. Chỉ cần giết Explorer.exe và đưa nó trở lại còn sống. Đó là quy trình gốc cho ví dụ: cmd.exe (khi bắt đầu từ menu Bắt đầu) –
Làm thế nào về các quy trình khác - như IIS? Tôi đoán Explorer.exe không phải là cha mẹ cho những người, do đó, một khởi động lại sẽ là cần thiết? – Colin