2012-07-08 51 views
0

我正在編寫一個程序,使用c編輯註冊表#確定用戶是否有權編輯註冊表?

我想檢查用戶是否有權在程序加載時進行編輯。什麼是檢查C#的最佳方式?

+0

可能重複的[如何獲得註冊表寫入權限在C#](http://stackoverflow.com/questions/721145/how-to-get-registry-write-permissions-in-c-sharp) – 2012-07-08 11:59:29

回答

1

嘗試打開帶有寫權限的RegistryKey。如果它給你一個Exception,你沒有權限。 你甚至可以指定某個特定的例外,表示你沒有權限。

2

註冊表中的每個節點都有自己的ACL(Access Credential List)。沒有一個權利。

通常,每個應用程序在HKLM配置單元或HKCU配置單元中都有自己的註冊表節點,或者兩者都有。

在前一種情況下,用戶必須是計算機的管理員,後者用戶可以讀/寫自己的註冊表。

要檢查實際訪問權限,可以使用RegistryKey.GetAccessControl method

但是,如上所述,您必須具有至少讀取權限才能調用此方法。

+0

我在做 var temp = registryKey.GetAccessControl(); 但在臨時它不是給我說讀或寫的價值? – 2012-07-08 12:11:35

+0

var temp = registryKey.GetAccessControl()。AccessRightType – 2012-07-08 12:12:47

0

用戶應該無權編輯「完整註冊表」,他們只應具有編輯註冊表中某些鍵的權限。

你最好做一個嘗試捕捉系統

try{ 
    // Do registry edit 
} 
catch { 
    Console.Log("Sorry you don't have permission to edit this key"); 
} 

每個用戶都是不同的,可以訪問某些部分,全部或部分使用Windows ACL註冊表的任何部分。

看看這裏的first answer

1
try{ 
    Registry.CurrentUser.OpenSubKey(@"PATH\TO\STUFF", true); 
    // Have write permissions. 
} 
catch { 
    // Do not have write permissions. 
}