【问题标题】:Windows 7 - C# Excel Add-In - Registry.GetValue is always returning nullWindows 7 - C# Excel 加载项 - Registry.GetValue 始终返回 null
【发布时间】:2009-11-06 19:44:07
【问题描述】:

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

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

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

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

??

【问题讨论】:

    标签: windows-7 registry


    【解决方案1】:

    实际答案:

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

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

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\CompanyX

    【讨论】:

    • 你应该接受这个作为你的答案。这样做您不会获得任何声誉,但它会让其他人知道您有解决方案。
    【解决方案2】:

    由于您要打开 HKLM,因此如果您不是以管理员身份运行,则必须请求只读访问权限。仅打开密钥可能会或可能不会起作用,因为 Windows 无法确定您没有尝试对其进行写入。

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

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

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

    【讨论】:

    猜你喜欢
    • 2012-03-18
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2015-08-15
    • 2016-11-04
    • 2016-07-28
    • 2010-11-08
    相关资源
    最近更新 更多