2017-10-18 34 views
-1

我試圖在C#中編寫一個代碼,該代碼從兩個變量名稱及其假定的內容列表中設置環境變量。 這我過得怎麼樣:設置一個新的環境變量:不允許請求的註冊表訪問

var VariableName = new[] {"ROOT"}; 
var VariableContent = new[] { "C:\\" }; 
var Variables = VariableName.Zip(VariableContent, (n, c) => new { Name = n, Content = c }); 
foreach (var Variable in Variables) 
{ 
    if (Environment.GetEnvironmentVariable(Variable.Name) == null) 
    {   
     Environment.SetEnvironmentVariable(Variable.Name, Variable.Content, EnvironmentVariableTarget.Machine); 

    } 

問題是SetEnvironmentVariable方法rturning以下異常:

System.Security.SecurityException:請求的註冊表訪問是不允許的。

這怎麼解決?

+0

如果您沒有'EnvironmentVariableTarget.Machine'權限,請嘗試較小的目標。 –

+0

顯然,當前用戶沒有訪問權限。在有權訪問的用戶的上下文中運行應用程序,或者在需要時請求提升。 – Equalsk

+0

有沒有針對此問題的任何程序化解決方案?我試過'新的EnvironmentPermission(EnvironmentPermissionAccess.Write,Variable.Name).Demand();'但是同樣的問題 –

回答

2

在管理員模式下運行您的應用程序

+0

是否有任何針對此問題的程序化解決方案?我試過'新的EnvironmentPermission(EnvironmentPermissionAccess.Write,Variable.Name).Demand();'但是同樣的問題 –

+1

這是編程解決方案。如果你想設置一個machene級別的變量,你需要通過添加一個帶有RequireAdministrator集合的清單來讓你的程序以管理員身份運行。 –

相關問題