c# - 搜索注册表时读取错误的注册表项 C#
问题描述
我正在尝试在注册表 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources 中读取此节点上的值
我正在尝试使用以下代码执行此操作:
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", false);
string[] dsnNames = key.GetValueNames();
但是,当我运行此代码时,它不会从我硬编码的节点中读取,而是从 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\ODBC 数据源中读取。这些是 32 位系统 DSN 的唯一 btw。
这真让我抓狂。我的机器是 Windows 10 Pro build 18363.1198 64 位。.Net 框架是 4.5.2。
为什么我的代码没有从正确的注册表树节点读取?
解决方案
它是正确的注册表树节点。
WOW6432Node
仅SOFTWARE
适用于 64 位平台上的 32 位应用程序:
当 32 位应用程序查询
HKEY_LOCAL_MACHINE\SOFTWARE\<company>\<product>
子键下的值时,应用程序从子键中读取HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\<company>\<product>
。
如果您将应用程序构建为 64 位,它将根据需要使用“原始”64 位注册表树。
如果您不想这样做,那么您已经获得了正确的密钥。
推荐阅读
- pip - 获取 pip pystruct==0.3.2 在 python=3.7 下构建
- ipad - 如何使用回调 URL 将草稿内容发送到 makeslides
- python - 哪个 R /Python 包用于分段分段回归和自动断点检测
- python - 为什么我在 python 中的掷骰子模拟器中的两个函数得到不同的结果?
- c++ - 书中“右值”和“右值引用”之间的混淆
- javascript - 在 Google Apps Script Web 应用程序中动态添加 Materialize 选择输入时出错
- javascript - 在鼠标移动时发送 Ajaxt 请求
- azure - Azure cosmosDB 中的子查询和 GroupBy
- vue.js - 如何通过使用 vuetify 单击按钮来更改背景颜色?
- python - 使用 beautifulsoup 在 python 中构建 webcrawler 的警告