我正在编写一个使用c#
编辑注册表的程序我想检查用户是否有权在程序加载时进行编辑。签入c#的最佳方式是什么?
答案 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。