You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Registry.GetValue返回null但注册表可见对应键的技术求助

解决C# Registry.GetValue读取64位注册表返回null的问题
  • 检查程序目标平台:64位Windows系统中,32位程序访问HKEY_LOCAL_MACHINE\SOFTWARE时会被自动重定向到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node。如果你在注册表编辑器里看到的键位于64位SOFTWARE路径下,但程序编译为x86(32位),就会读不到目标值。解决方式:

    • 右键项目→属性→生成,将目标平台改为x64;
    • 或选择Any CPU,并取消勾选“首选32位”选项。
  • 显式指定注册表视图:如果需要保持程序为32位,又要读取64位注册表分支,可通过RegistryKey.OpenBaseKey方法指定64位视图,示例代码:

    using Microsoft.Win32;
    
    var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
    using var targetKey = baseKey.OpenSubKey(@"SOFTWARE\CNC Software, Inc.\Mastercam 2023");
    var installLanguage = targetKey?.GetValue("InstallLanguage", null);
    
  • 核对注册表路径实际位置:打开注册表编辑器,同时检查HKEY_LOCAL_MACHINE\SOFTWARE和HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node下是否存在目标键。部分软件可能实际安装在32位分支下,容易造成路径误判。

  • 确认注册表键权限:即使以管理员身份运行,也要确保当前用户对目标注册表键拥有读取权限。右键目标键→权限,检查当前用户组(如Administrators)是否有读取权限,缺失则添加对应权限。

内容的提问来源于stack exchange,提问作者PouncingPiggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:31:35