我不知道这里发生了什么......但是Microsoft.Win32.Registry类正在返回各种奇怪的东西。当我说GetSubKeys它返回一堆在regedit中没有的东西时(例如,我调用Registry.LocalMachine.OpenSubKey(“SOFTWARE”)。SubKeyCount并返回“81”......但是只有30个键当我使用regedit查看它时
当我尝试获取某些东西的值时,它总是返回null。
我已经浏览了注册表并为每个人设置了各种密钥的权限:完全只是为了测试,但仍然没有。
我错过了什么吗?我刚从Vista Ultimate机器升级到Windows7 Ultimate .........
答案 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中。