我有以下 C# 代码,它从 Windows 7 的注册表中读取 UAC 状态
object obj = Registry.LocalMachine.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA", (long)1);
它在具有管理员/非管理员帐户的 Windows 7 上完美运行。 它总是返回我在 Windows 8 下提供的默认值。 注册表项在那里。我可以通过 regedit 查看它的值(value)。但是 C# 代码不会读取它。谁能说出为什么?它是一个 .net 4 应用程序。用户帐户是未提升权限的管理员。
最佳答案
它返回默认值(在 Windows 7 和 8 上)。下面是在不以管理员身份运行的情况下在 Windows 7 和 8 上读取正确注册表值的代码。
object obj = Registry.GetValue(
@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\",
"EnableLUA",
(long)1);
请注意,我们在 Registry
上调用 GetValue
方法,而不是在 Registry.LocalMachine
上调用,我们将键和值名称作为两个单独的参数传递.
关于c# - 无法读取 Windows 8 中的注册表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15245264/