更改

跳转至: 导航搜索

Windows虚拟化与重定向

添加565字节2020年6月25日 (四) 23:41
无编辑摘要
Ballance在文件系统与注册表中会存有一部分数据,但这些数据有时可能并不会老老实实呆在原本位置,经常会莫名其妙地出现在其他位置,并且您也对修改何处的数值感到困惑,本页面将指导您如何根据您自身的情况找到真正的数据位置所在。{{ProfessionalArticle/zh}} Ballance在文件系统与[[注册表]]中会存有一部分数据,但这些数据有时可能并不会老老实实呆在原本位置,经常会莫名其妙地出现在其他位置,并且您也对修改何处的数值感到困惑,本页面将指导您如何根据您自身的情况找到真正的数据位置所在。 == 默认位置 == Ballance的注册表默认存储位置为:<code>HKEY_LOCAL_MACHINE\SOFTWARE\Ballance</code>(Ballance的B有时为大写,有时为小写,但无影响<ref>由实践得出的结论。使用Ballance.iso安装的原版1.0版本的Ballance,Ballance的B为大写,其余的二次封装安装器生成的均为小写。</ref>)。Ballance的文件系统默认存储位置即为安装Ballance的位置。这些位置本应当不会变动,但是由于下述的一些Windows特性,可能会导致一些意想不到的情况发生,例如文件或注册表项不在原本位置。
== 概念 ==
=== 注册表的64位重定向 ===
Windows有32位版本(x86)和64位版本(x64)之分。通常来说,您运行的Windows XP SP3均为32位版本(Windows XP虽然存在一个名为Windows XP x64的发行版,但是应用极少可以忽略其在玩家中的存在性),而对于Windows x64的发行版,但是应用极少,可以忽略其在玩家中的存在性),而对于Windows Vista,Windows 7,Windows 8/8.1和Windows 10来说,您需要通过右键计算机(此电脑),选择属性来查看您的计算机位数版本。
程序也有32位版本和64位版本之分。Ballance总是一个32位程序。
此外,UAC重定向与64位重定向为'''独立'''关系,倘若一个32位程序在用户态下欲访问<code>HKEY_LOCAL_MACHINE\SOFTWARE</code>,那么它的访问将会被重定向到<code>HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\WOW6432Node</code>下。
=== HKEY_USERS与HKEY_CURRENT_USER ===
=== HKEY_USERS与HKEY_CURRENT_USER ===<code>HKEY_USERS</code>和<code>HKEY_CURRENT_USER</code>同为注册表的两大主键。<code>HKEY_CURRENT_USER</code>是指向<code>HKEY_USERS\*</code>的符号链接,其中<code>*</code>为当前登录用户的SID。<code>HKEY_USERS\*\SOFTWARE\Classes</code>是指向<code>HKEY_USERS\*_Classes</code>的符号链接
在Windows注册表中,有几大主键,其中两者为:<code>HKEY_USERS</code>和<code>HKEY_CURRENT_USER</code>。两者之间存在一个映射关系。<code>HKEY_USERS</code>存储了全部用户的设置,而<code>HKEY_CURRENT_USER</code>则从<code>HKEY_USERS</code>中拾取当前用户对应的字段并映射于自身中。=== HKEY_LOCAL_MACHINE与HKEY_CLASSES_ROOT ===
如果展开<code>HKEY_USERSHKEY_CLASSES_ROOT</code>,子项的名字即为Windows为每一位用户分配的编码。其中没有任何结尾的,将会根据是否是当前用户被映射到<code>HKEY_CURRENT_USERHKEY_LOCAL_MACHINE</code>下,而以同为注册表的两大主键。<code>_ClassesHKEY_CLASSES_ROOT</code>为结尾的,会根据是否是当前用户被映射到<code>HKEY_CURRENT_USERHKEY_LOCAL_MACHINE\SoftwareSOFTWARE\Classes</code>下(其事实上与对应的无<code>_Classes</code>结尾的子项中的<code>SoftwareHKEY_CURRENT_USER\SOFTWARE\Classes</code>一致)的混合视图。
=== Windows兼容性设置 ===
=== 案例3 ===
一位Windows 7 64位用户,Ballance安装在系统盘,安装后根据吧友指导,没有设置兼容性,仅仅设置了“以管理员身份运行”,后来发现将此设置去除也能正常游戏。此时他想进行窗口化游戏,在注册表内搜索到了4个键,不知道该改哪个。64位用户,Ballance安装在系统盘,安装后根据吧友指导,没有设置兼容性,仅仅设置了“以管理员身份运行”,后来发现将此设置去除也能正常游戏。此时他想进行窗口化游戏,在注册表内搜索到了5个键,不知道该改哪个。
解决方案:注册表中搜索到的4个键应当分别位于:解决方案:注册表中搜索到的5个键应当分别位于:
* <code>HKEY_CLASSES_ROOT\VirtualStore\MACHINE\SOFTWARE\WOW6432Node\Ballance</code>
* <code>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ballance</code>
* <code>HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\WOW6432Node\Ballance</code>
* <code>HKEY_USERS\xxx_Classes\VirtualStore\MACHINE\SOFTWARE\WOW6432Node\Ballance</code>
应该改的是后三个中的任意一个(因为具有映射性)。不能使用窗口化补丁,因为窗口化补丁为硬编码。不能使用工具箱,因为工具箱不能识别UAC虚拟化。应该改的是后三个或者第一个中的任意一个(因为具有映射性)。不能使用窗口化补丁,因为窗口化补丁为硬编码。不能使用工具箱,因为工具箱不能识别UAC虚拟化。
== 你知道吗 ==
* https://blog.csdn.net/xiaohua_de/article/details/84293958
* https://www.cnblogs.com/xenophon/p/4956218.html
* [https://docs.microsoft.com/zh-cn/windows/win32/winprog64/shared-registry-keys 32位程序于64位注册表中的键的受影响的列表注册表重定向与反射列表]
* https://msdn.microsoft.com/en-us/library/aa965884.aspx
 
== 注释 ==
 
<references />
3,424
个编辑

导航菜单