我想读取注册表项\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName.
当我检查注册表编辑器中的键时,我得到的值是"Window 10 Pro“。然而,当我在我的c#应用程序中读取相同的键时,结果是"Window 10 Enterprise“
该操作系统是Windows 10 64位版本,应用程序针对的是.NET框架4.6.1,在visual中构建的平台是“任意CPU”。
来自我的应用程序的代码片段:
registryKey = Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", false);
if (registryKey != null)
{
nameString = registryKey.GetValue("ProductName", "-Unknown-").ToString();
发布于 2022-01-19 14:36:26
我首先要检查一下,以确保这两件事在同一台计算机上运行。
否则,有一件事可以做到这一点。HKLM\Software有一个名为WOW6432Node
的条目。这里的“哇”是"Windows on Windows“。当旧的32位进程访问注册表以将查询重定向到该部分时,就会使用它,类似于Program Files
vs Program Files (x86)
文件夹。因此,一个32位进程访问这里:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
将改为从这里读到:
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\ProductName
但是,同样地,对于这个特殊的关键,这两个项目有着不同的价值,这将是非常奇怪的。
https://stackoverflow.com/questions/70772437
复制相似问题