Câu trả lời:
Sử dụng lớp System.EnFE .
Các phương pháp
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
và
System.Environment.SetEnvironmentVariable(variable, value [, Target])
sẽ làm công việc cho bạn.
Các tham số tùy chọn Target
là một enum loại EnvironmentVariableTarget
và nó có thể là một trong số: Machine
, Process
, hoặc User
. Nếu bạn bỏ qua nó, mục tiêu mặc định là quy trình hiện tại.
EnvironmentVariableTarget.Machine
yêu cầu quyền truy cập của Quản trị viên không?
Tôi đã gặp phải điều này trong khi làm việc trên một ứng dụng bảng điều khiển .NET để đọc biến môi trường PATH và thấy rằng việc sử dụng System.En Môi.GetEn MôiVariable sẽ tự động mở rộng các biến môi trường.
Tôi không muốn điều đó xảy ra ... điều đó có nghĩa là các thư mục trong đường dẫn, chẳng hạn như '% SystemRoot% \ system32' đã được viết lại thành 'C: \ Windows \ system32'. Để có được đường dẫn chưa được mở rộng, tôi đã phải sử dụng:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
Làm việc như một cơ duyên đối với tôi.
Nhận và thiết lập
Được
string getEnv = Environment.GetEnvironmentVariable("envVar");
Bộ
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Điều này sẽ làm việc cho một biến môi trường là cài đặt máy. Đối với Người dùng, chỉ cần thay đổi thành Người dùng.
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machine
Thay vào đó, nếu bạn muốn biến PATH của bạn được sử dụng vĩnh viễn .
Tôi có thể cập nhật biến môi trường bằng cách sử dụng như sau
string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty;
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";"))
EnvPath = EnvPath + ';';
EnvPath = EnvPath + @"C:\Test";
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);