Windows 7 Windows 7-C#Excel加载项-Registry.GetValue始终返回null

Windows 7 Windows 7-C#Excel加载项-Registry.GetValue始终返回null,windows-7,registry,Windows 7,Registry,我不知道这里发生了什么。。。但是Microsoft.Win32.Registry类返回了各种奇怪的东西。当我说GetSubKeys时,它会返回一些在regedit中没有的东西(例如,我调用Registry.LocalMachine.OpenSubKey(“软件”).SubKeyCount,它会返回“81”…但是当我使用regedit查看它时,只有30个键) 当我试图获取某个东西的值时,它总是返回null 我已经检查了注册表并为每个人设置了各种键的权限:完全只是为了测试,但仍然没有 我错过什么了吗

我不知道这里发生了什么。。。但是Microsoft.Win32.Registry类返回了各种奇怪的东西。当我说GetSubKeys时,它会返回一些在regedit中没有的东西(例如,我调用Registry.LocalMachine.OpenSubKey(“软件”).SubKeyCount,它会返回“81”…但是当我使用regedit查看它时,只有30个键)

当我试图获取某个东西的值时,它总是返回null

我已经检查了注册表并为每个人设置了各种键的权限:完全只是为了测试,但仍然没有

我错过什么了吗?我刚从Vista Ultimate机器升级到Windows7 Ultimate


??由于您正在打开HKLM,如果您不是以管理员身份运行,则必须请求只读访问。仅仅打开密钥可能有效,也可能无效,因为Windows无法确保您没有尝试写入密钥

更改权限并不是解决方案,因为它只会打开一个安全漏洞,微软自XP以来一直试图关闭该漏洞(自愿以非管理员身份运行),并强制关闭Vista发布以来的权限(默认为非管理员)

有关此主题的讨论,请参见问题。它属于Delphi,但包含一些您可能会发现有用的信息和链接


只是出于好奇。。。为什么Excel加载项需要读取或写入HKLM?只有安装程序才能写入该配置单元,文件关联存储在HKCR或HKCU中。

由于您正在打开HKLM,如果您不是以管理员身份运行,则必须请求只读访问。仅仅打开密钥可能有效,也可能无效,因为Windows无法确保您没有尝试写入密钥

更改权限并不是解决方案,因为它只会打开一个安全漏洞,微软自XP以来一直试图关闭该漏洞(自愿以非管理员身份运行),并强制关闭Vista发布以来的权限(默认为非管理员)

有关此主题的讨论,请参见问题。它属于Delphi,但包含一些您可能会发现有用的信息和链接

只是出于好奇。。。为什么Excel加载项需要读取或写入HKLM?只有安装程序才能写入该配置单元,文件关联存储在HKCR或HKCU中。

实际答案:

因为我的笔记本电脑是64位的,我的应用程序是32位的。。。它在看下面

HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\CompanyX

实际答案是:

因为我的笔记本电脑是64位的,我的应用程序是32位的。。。它在看下面

HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\CompanyX


没有写作,只有阅读。所以我不明白。。。即使我试图明确地说“我只是在读这个”。。。我仍然没有看到regedit中的键。它不应该显示一个“合并视图”:没有文字,只有阅读。所以我不明白。。。即使我试图明确地说“我只是在读这个”。。。我仍然没有看到regedit中的键。它不应该显示“合并视图”:您应该接受这一点作为您的答案。你这样做不会赢得任何声誉,但会让别人知道你有解决办法。你应该接受这一点作为你的答案。这样做不会让你赢得任何声誉,但会让别人知道你找到了解决方案。