c# - C# 无法读取键值名称
问题描述
我正在尝试在 C# 中读取注册表上的所有子键它适用于本机子键,但是当我创建自己的键时,我无法读取它。
string all = "-start" + Environment.NewLine;
string registryKey2 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\AnimateMinMax";
RegistryKey key2 = Registry.LocalMachine.OpenSubKey(registryKey2, true);
foreach (string valueName in key2.GetValueNames())
{
all += valueName + Environment.NewLine;
}
all += "-End" + Environment.NewLine;
MessageBox.Show(all);
“测试”Dword 键丢失
你有什么建议吗?
此致
解决方案
您正在查看错误的注册表项部分。您的应用程序编译为 32 位,但您的操作系统是 64 位。在这种情况下,Windows 会自动重定向到WOW6432Node
注册表中不存在该键的位置。
解决方案:
1) 在项目设置中,将目标 CPU 更改为 x64。
2)使用RegistryView.Registry64
flag打开64位注册表视图。
var localMachine64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
var key2 = localMachine64.OpenSubKey(registryKey2, true);
// rest of the code
推荐阅读
- python - 将列表列表转换为具有多个键值的字典
- pandas - AWS Lambda 函数中缺少必需的依赖项 ['numpy']
- javascript - 动态添加函数作为属性
- java - java.util.HashMap 不能转换为 java.util.Date
- c - 如何使用 Arduino 在 LCD 上无延迟()方法闪烁单个字符?
- php - (PHP) 为什么这是以下回显的输出?
- c# - 缺少 MSBuildCommunityTasks 文件夹
- dataprovider - 在 Genexus 中将 SDT 数据转换为 BC
- c++ - #define 一个宏和模板,它将运行任何类型的函数,包括 void,并返回平均运行时间?
- c++ - 我是否需要在头文件和源文件中指定调用约定