我正在编写一个使用 c# 编辑注册表的程序
我想检查用户是否有权在程序加载时进行编辑。检查 c# 的最佳方法是什么?
注册表中的每个节点都有自己的 ACL(访问凭证列表)。没有一项权利。
通常,每个应用程序都有自己的注册节点,在 HKLM 配置单元或 HKCU 配置单元中,或两者的组合。
在前一种情况下,用户必须是计算机的管理员,在后一种情况下,用户可以读/写自己的注册表。
要查看实际的访问权限,可以使用RegistryKey.GetAccessControl
方法。
但是,如上所述,您必须至少具有读取权限才能调用此方法。
try{
Registry.CurrentUser.OpenSubKey(@"PATH\TO\STUFF", true);
// Have write permissions.
}
catch {
// Do not have write permissions.
}
尝试RegistryKey
用写权限打开一个。如果它给你一个Exception
,你没有权限。您甚至可以将哪个异常指定给某个表示您没有权限的异常。
用户不应该有权编辑“完整注册表”,他们应该只有权编辑注册表中的某些键。
你最好做一个try catch系统
try{
// Do registry edit
}
catch {
Console.Log("Sorry you don't have permission to edit this key");
}
每个用户都是不同的,并且可以使用 Windows ACL 访问注册表的某些部分、所有部分或没有部分。
看看这里的第一个答案。