使用VBA权限读取Windows 7上的注册表



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

    RegStr = fReturnRegKeyValue(HKEY_LOCAL_MACHINE, "SoftwareThisAppApp", "Activation")

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

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

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

    RegStr = fReturnRegKeyValue(HKEY_CURRENT_USER, "SoftwareThisAppApp", "Activation")

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

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

最新更新