我想檢查我是否有顯示的形式,允許用戶更改都寫在關鍵的一些設置之前,在註冊表中特定鍵的寫訪問。RegistryPermission是如何工作的?
碼消毒爲清楚起見
public bool CanWrite()
{
string key = @"HKEY_LOCAL_MACHINE\SOFTWARE\MyHaccpPlan, Inc.\2.0";
try
{
RegistryPermission permission = new RegistryPermission(RegistryPermissionAccess.Write, key);
permission.Demand();
return true;
}
catch(SecurityException)
{
return false;
}
}
我使用一個具有隻讀訪問權限的用戶運行的應用程序。問題是這個函數返回true,即使用戶沒有寫權限。
後來想
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MyHaccpPlan, Inc.\2.0", "Language", "fr-CA");
通話將失敗,UnauthorizedAccessException
。
如何正確試圖寫入之前,檢查註冊表中的權利?
編輯
我不希望當前用戶能夠寫在那裏。我想使用這個註冊表項作爲一個標誌,該軟件中的一個功能應該被禁用。但是,如果用戶是管理員,我希望軟件允許該功能。目標是網絡管理員可以預設設置,並且用戶將無法更改設置。
但實際上寫,等待它崩潰的旁邊,我要檢查使用.NET提供的,如果這是可能的權限系統的安全性。
我想我很難解釋。根據客戶端(例如大學)的不同,網絡管理員將在該位置創建密鑰,並使用該註冊表中的ACL限制訪問權限,以確保學生對該密鑰具有隻讀訪問權限。對於其他類型的設置,用戶將在CURRENT_USER中寫入自己的設置,除非該設置在LOCAL_MACHINE中被覆蓋。 – 2009-08-31 22:26:59
但是,這就是我所做的,我使用OpenSubKey和寫權限,並且完全刪除了RegistryPermission。我會將這個答案標記爲已接受,因爲這是我所做的。 – 2009-08-31 22:28:41