c# - 无法读取 Windows 8 中的注册表值

标签 c# windows windows-8 registry uac

我有以下 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/

相关文章:

windows - 批处理以隔离具有多个项目的文本文件中的最后一个项目

windows-8 - MPI_Init() 运行时间很长

c# - ASP.Net MVC 中的 LDAP 身份验证

windows - 如何编写批处理(Windows)来启动Cygwin(mintty.exe),然后执行Python脚本?

c# - 如何在 C# 中从 JSON 自动生成/创建 SQL 服务器表

java - 如果从 Windows 环境变量 PATH 启动,如何获取 Java 中可执行文件的完整路径?

c# - Windows 7 和 8 中的系统范围设置 - 注册表不再有用?

c# - 如何在 Windows Phone 8 中使用 WNS?

c# - 如何获取(逻辑)桌面上的项目总数(C#)

c# - 如何在 EF 4.1 RC 中的 DbContext 级别关闭更改跟踪?