当心Windows 8.1注册表读取虚拟化不适用于64位应用程序

皮特·斯滕索尼斯

(在尝试了David Heffernan的建议后更新)

我有一个旧版Win32本机应用程序(Delphi 6),该应用程序在HKEY_LOCAL_MACHINE \ Software \\键下将值写入注册表。稍后,其他一些旧版Win32本机应用程序和一个新的.NET应用程序将读取这些值。.NET应用程序是基于AnyCPU构建的,因此将作为64位映像执行。因为它使用的是32位应用程序编写的配置,所以.NET软件会将其注册表读取重定向到Win32 API应用程序实际写入的Wow6432Node。

没有一个应用程序运行提升。所有应用程序都是交互式的。用于运行应用程序的帐户具有对HKEY_LOCAL_MACHINE \ Software \\注册表项及其子项的显式“完全控制”。

据我所知,这不是在使用注册表虚拟化,因为32位应用程序对其写入的HKLM密钥具有写访问权。

这种情况在64位Windows 7和64位Windows 8计算机上都可以正常运行,但是在新的Windows 8.1 64位计算机上,所有设备都无法正常工作。

虽然旧版Win32应用程序无误地写入注册表,但现在看来已在虚拟化。可以通过查看用户虚拟注册表项来确认。我在那里看到所有书面价值。

当我用REGEDIT查看HKEY_LOCAL_MACHINE \ Software \\密钥时,我写的大约一半的密钥只是从HKEY_LOCAL_MACHINE \ Software \\中丢失了,但都存在于虚拟文件夹中。

据我了解,具有写入权限的32位应用程序应该没有虚拟化,但是有。更糟糕的是,当我读取非虚拟化密钥时,我看到了写入虚拟化存储的一些但不是全部值。

为什么它突然使写操作虚拟化,为什么当我读取原始密钥时读操作不会显示所有虚拟化值(即,虚拟读操作无法按预期工作)?

我认为这一定是一个权限问题,就像我以“以管理员身份”运行该应用程序一样,所有的密钥都在那里。但是,不允许以升高的速度运行最终配置。

更新资料

我清除了这台计算机上的所有注册表设置。既在HKCU下的虚拟商店中,又在HKLM下的共享区域中。然后重新开始,不运行提升。这引起了类似的症状,但是这次我只看到HKLM密钥中的一个密钥。

我打算编写一个Win32应用程序来枚举HKEY_LOCAL_MACHINE \ Software \\键,以防万一我被regedit.exe欺骗,或者在64位OS上运行时对我不起作用,并且当我收到来自那。在旧版32位WinAPI应用程序和新版64位应用程序之间存在虚拟化不匹配的问题。有关详细信息,请参见我的答案。

戴维·赫弗南

注册表的虚拟化在Windows 8.1中的工作原理与在Vista,Win7和Win8中的工作原理相同。没有可以解释您报告内容的更改。

您是否知道虚拟化是7年前在Vista中引入的,以帮助无法修改的应用程序在UAC上工作。这个想法是,您修复应用程序以了解UAC,并停止运行虚拟化程序。

关于虚拟化的事情是,如果您以标准用户身份运行,您的应用程序将写入虚拟存储。但是,如果您执行提升权限的应用程序,则该应用程序将写入注册表的共享部分HKLM从上面的描述中,您似乎已经提升了应用程序的运行速度,并且已向HKLM虚拟存储区而不是虚拟存储区写入了值

我建议您清除此计算机上的所有注册表设置。既在虚拟商店下HKCU,又在共享区下HKLM然后从您的应用程序重新开始,而不是提升运行。我相信它的工作方式与以前的版本相同。

但是,令我惊讶的是,您仍在尝试使用虚拟化作为功能。帮助无助的人是拐杖。不要无助。停止虚拟化运行。摆脱虚拟化。

更新资料

您的问题编辑完全改变了这一点。实际上,您并不是在问Windows 8.1与早期版本之间的差异。您正在Windows 8.1机器上运行另一个程序,该程序是64位。而且64位进程从未虚拟化。

我再次重申我的建议,即不要以您的方式使用虚拟化。以这种方式依赖它是愚蠢的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

启用两步验证后,Windows 8 Mail应用程序不适用于Gmail

来自分类Dev

创建适用于Windows 10/8 x64的应用程序需要哪些qt组件?

来自分类Dev

适用于多种环境的应用程序(Windows Phone 8,Windows Phone 8.1,Windows 8,Windows 7,Windows XP)

来自分类Dev

适用于Windows 8应用程序的cordova.js错误

来自分类Dev

构建适用于Windows 8(不是Windows Phone 8)Microsoft Surface的Sencha Touch应用程序

来自分类Dev

UTF-8编码不适用于Eclipse Java应用程序

来自分类Dev

通用应用程序NTLM适用于Windows应用商店,但不适用于Windows Phone

来自分类Dev

在Windows注册表中注册应用程序

来自分类Dev

适用于Windows的AdMob SDK 8

来自分类Dev

Log4net适用于控制台应用程序,但不适用于Windows服务

来自分类Dev

需要关于 kivy mapview 的帮助,适用于 Windows,但不适用于 android,应用程序无法启动

来自分类Dev

内置麦克风不适用于Windows 10上的桌面应用程序

来自分类Dev

在Windows 10上,未提升的应用程序的全局热键不适用于提升的应用程序

来自分类Dev

PHP OCI8扩展不适用于PHP 7 64位

来自分类Dev

Windows 8 Pro版本信息在注册表中?

来自分类Dev

npm install不适用于Windows 8上的--save-dev选项

来自分类Dev

滚动查看器不适用于Windows Phone 8中的画布

来自分类Dev

Windows 8 / Windows Phone 8应用程序提交自动化

来自分类Dev

Windows 8应用程序/加载屏幕

来自分类Dev

Windows 8的WPF触摸应用程序

来自分类Dev

Windows Phone 8新闻应用程序

来自分类Dev

Windows 8应用程序/加载屏幕

来自分类Dev

适用于python的Windows GUI应用程序?

来自分类Dev

适用于Windows 64位的LVITEM

来自分类Dev

Ubuntu 64位Windows 8上的Windows虚拟PC上的Ubuntu 32位或64位?

来自分类Dev

Ubuntu 64位Windows 8上的Windows虚拟PC上的Ubuntu 32位或64位?

来自分类Dev

适用于Windows 8 / 8.1的html5或xaml

来自分类Dev

适用于Windows Phone 8(XAML)的Microsoft广告SDK

来自分类Dev

适用于Windows 8的Github无法克隆存储库

Related 相关文章

  1. 1

    启用两步验证后,Windows 8 Mail应用程序不适用于Gmail

  2. 2

    创建适用于Windows 10/8 x64的应用程序需要哪些qt组件?

  3. 3

    适用于多种环境的应用程序(Windows Phone 8,Windows Phone 8.1,Windows 8,Windows 7,Windows XP)

  4. 4

    适用于Windows 8应用程序的cordova.js错误

  5. 5

    构建适用于Windows 8(不是Windows Phone 8)Microsoft Surface的Sencha Touch应用程序

  6. 6

    UTF-8编码不适用于Eclipse Java应用程序

  7. 7

    通用应用程序NTLM适用于Windows应用商店,但不适用于Windows Phone

  8. 8

    在Windows注册表中注册应用程序

  9. 9

    适用于Windows的AdMob SDK 8

  10. 10

    Log4net适用于控制台应用程序,但不适用于Windows服务

  11. 11

    需要关于 kivy mapview 的帮助,适用于 Windows,但不适用于 android,应用程序无法启动

  12. 12

    内置麦克风不适用于Windows 10上的桌面应用程序

  13. 13

    在Windows 10上,未提升的应用程序的全局热键不适用于提升的应用程序

  14. 14

    PHP OCI8扩展不适用于PHP 7 64位

  15. 15

    Windows 8 Pro版本信息在注册表中?

  16. 16

    npm install不适用于Windows 8上的--save-dev选项

  17. 17

    滚动查看器不适用于Windows Phone 8中的画布

  18. 18

    Windows 8 / Windows Phone 8应用程序提交自动化

  19. 19

    Windows 8应用程序/加载屏幕

  20. 20

    Windows 8的WPF触摸应用程序

  21. 21

    Windows Phone 8新闻应用程序

  22. 22

    Windows 8应用程序/加载屏幕

  23. 23

    适用于python的Windows GUI应用程序?

  24. 24

    适用于Windows 64位的LVITEM

  25. 25

    Ubuntu 64位Windows 8上的Windows虚拟PC上的Ubuntu 32位或64位?

  26. 26

    Ubuntu 64位Windows 8上的Windows虚拟PC上的Ubuntu 32位或64位?

  27. 27

    适用于Windows 8 / 8.1的html5或xaml

  28. 28

    适用于Windows Phone 8(XAML)的Microsoft广告SDK

  29. 29

    适用于Windows 8的Github无法克隆存储库

热门标签

归档