c# - C# Winforms 从注册表中获取 int 值
问题描述
private void button1_Click(object sender, EventArgs e)
{
int i = (Int32)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Beerbaum", "TCP_Listening_Delay", null);
MessageBox.Show(i.ToString());
}
在注册表中有一个名为TCP_Listening_Delay的QWORD 值(64 位),其值为dec:5000
当我按下按钮时,它应该打开一个应该显示 5000 的 MessageBox,但它没有。它所做的只是给我,
“未处理 NullReferenceException”。
解决方案
Registry.GetValue(String, String, Object) 方法
在指定的注册表项中检索与指定名称关联的值。如果在指定的键中找不到名称,则返回您提供的默认值,如果指定的键不存在,则返回 null。
退货
null
如果指定的子键keyName
不存在;valueName
否则,与或if关联的值未找到。defaultValue
valueName
但是我认为您的问题是您可能正在尝试从 32/64 位应用程序中读取 64/32 位注册表配置单元
RegistryView 枚举:在 64 位版本的 Windows 上,部分注册表分别存储用于 32 位和 64 位应用程序。32 位应用程序有 32 位视图,64 位应用程序有 64 位视图。
当您使用 OpenBaseKey 和 OpenRemoteBaseKey(RegistryHive, String, RegistryView) 方法以及 RegistryKey 对象的 FromHandle 属性时,可以指定注册表视图。
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
using (var subKey = baseKey.OpenSubKey("blah", RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl))
{
if (subKey != null)
{
var value = subKey.GetValue("Somekey");
}
}
}
推荐阅读
- python - 在Tensorflow中使用model_zoo的faster_rcnn_resnet101_v1_640x640_coco17_tpu-8时遇到错误==2.5
- linux - Bash 比较用点分隔的数字
- django - django 从数据库中获取特定数据
- sql-server - 表达式中的类型转换影响 CardinalityEstimate - 来自 XML 的数据
- python - 将 sympy 公式转换为值:*:'function' 和 'float' 不支持的操作数类型
- javascript - 数据表中是否有任何问题不显示下拉字段
- flutter - flutter 把 pubspec.lock 的所有依赖都移到了 pubspec.yaml 中报错
- python - 构建用于分析的字数计数器
- pyinstaller - Pyton3 ModuleNotFoundError:没有名为“pyAesCrypt”的模块
- reactjs - Nextjs 带有样式组件的活动导航栏