0

我正在编写一个使用 c# 编辑注册表的程序

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

4

4 回答 4

2

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

通常,每个应用程序都有自己的注册节点,在 HKLM 配置单元或 HKCU 配置单元中,或两者的组合。

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

要查看实际的访问权限,可以使用RegistryKey.GetAccessControl方法

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

于 2012-07-08T11:41:31.303 回答
1
try{
    Registry.CurrentUser.OpenSubKey(@"PATH\TO\STUFF", true);
    // Have write permissions.
}
catch {
    // Do not have write permissions.
}
于 2013-03-11T15:49:25.857 回答
1

尝试RegistryKey用写权限打开一个。如果它给你一个Exception,你没有权限。您甚至可以将哪个异常指定给某个表示您没有权限的异常。

于 2012-07-08T11:41:22.540 回答
0

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

你最好做一个try catch系统

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

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

看看这里的第一个答案

于 2012-07-08T11:43:44.560 回答