确定用户是否有权编辑注册表?

时间:2012-07-08 11:37:47

标签: c# registry

我正在编写一个使用c#

编辑注册表的程序

我想检查用户是否有权在程序加载时进行编辑。签入c#的最佳方式是什么?

4 个答案:

答案 0 :(得分:2)

注册表中的每个节点都有自己的ACL(访问凭据列表)。没有一项权利。

通常,每个应用程序都有自己的注册表节点,可以在HKLM配置单元或HKCU配置单元中,也可以两者兼而有之。

在前一种情况下,用户必须是计算机的管理员,后者用户可以读/写自己的注册表。

要检查实际访问权限,您可以使用RegistryKey.GetAccessControl method

但是,如上所述,您必须至少具有读取权限才能调用此方法。

答案 1 :(得分:1)

尝试使用写访问权限打开RegistryKey。如果它为您提供Exception,则表示您没有权限。 您甚至可以指定某个表示您没有权限的异常。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

用户不应该有权编辑“完整注册表”,他们应该只具有编辑注册表中某些键的权限。

你最好做一个尝试捕捉系统

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

每个用户都是不同的,可以使用Windows ACL访问注册表的某些部分,所有部分或任何部分。

在这里查看first answer