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

时间:2009-11-06 19:44:07

标签: windows-7 registry

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

当我尝试获取某些东西的值时,它总是返回null。

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

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

...

2 个答案:

答案 0 :(得分:1)

实际答案:

Windows 64-bit registry v.s. 32-bit registry

因为我的笔记本电脑是64位,我的应用程序是32位...它正在寻找

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \公司CompanyX

答案 1 :(得分:0)

由于您正在打开HKLM,如果您不是以管理员身份运行,则必须要求只读访问权限。打开密钥可能会也可能不会起作用,因为Windows无法确定您是否尝试写入密钥。

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

有关此主题的讨论,请参阅this问题。它与Delphi有关,但包含一些您可能会觉得有用的信息和链接。

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