0

在 Access 2007 和 Access 2010 中,我有一行代码在 50 多台 PC(Vista 和 Windows 7 32 和 64 位)上完美运行多年。

    RegStr = fReturnRegKeyValue(HKEY_LOCAL_MACHINE, "Software\ThisApp\App", "Activation")

在一台带有 Access2010/VBA 模块(32 位)的特定 PC(Windows 7 64 位)上

上面的代码行没有看到注册表项。

当我将 HKEY_LOCAL_MACHINE 更改为 HKEY_CURRENT_USER 时,它工作正常。

    RegStr = fReturnRegKeyValue(HKEY_CURRENT_USER, "Software\ThisApp\App", "Activation")
4

1 回答 1

1

此类问题的一个可能原因是Microsoft 从 Vista 开始添加到 Windows的注册表虚拟化。在 Windows 中启用 UAC(用户帐户控制)后,非特权用户仍然可以“修改”系统范围的设置,如 HKEY_LOCAL_MACHINE 注册表值,但这些更改仅对该用户“虚拟化”,其他用户无法看到它们。

在这种情况下,一个用户可能已经运行了一个将设置保存到 HKEY_LOCAL_MACHINE 的应用程序。该用户将能够检索这些设置并正常运行应用程序,但其他用户将无法看到这些 HKEY_LOCAL_MACHINE 设置,因为它们仅对创建它们的用户可见。

于 2013-08-05T23:16:05.990 回答