什么是虚拟化流程?


10

我安装了MinGW和MSYS,从不真正关心二进制文件的工作方式。但是,今天我打开了Process Explorer,意识到我有一些虚拟化的流程:

工艺清单

我知道通常make / gcc / sh / mintty用于POSIX / unix类系统,但是我认为MinGW / MSYS项目将提供本机可执行文件。虚拟化通常是我与虚拟机相关联的一个术语,这让我有些困惑。任务管理器实际上将相应的列称为“ UAC虚拟化”。

那么Windows 中的虚拟化标志是什么意思呢?这是Vista之前的可执行文件的某种兼容层吗?


简短的答案:是的,它是Vista之前的可执行文件的兼容性层。(答案略长一些:因为许多此类可执行文件都假定该进程将始终具有管理员特权,而在Vista中这不太可能是真的。)
哈里·约翰斯顿

Answers:


8

它基本上是一个文件系统和注册表“包装器”,如果用户没有正确的写许可权,它会重定向文件写尝试,有关更多信息,请参阅有关UAC的Wikipedia文章

假设用户将以管理员权限运行的应用程序在Windows的早期版本中使用有限的用户帐户运行时会遇到问题,这通常是因为它们试图写入计算机范围或系统目录(例如Program Files)或注册表项(特别是HKLM)。UAC尝试使用“文件和注册表虚拟化”来缓解这种情况,该技术将写入(和后续读取)重定向到用户配置文件中每个用户的位置。

例如,如果应用程序尝试写入用户没有写许可权的目录,例如“ C:\ Program Files \ appname \ settings.ini”,则写操作将重定向到“ C:\ Users \ username” \ AppData \ Local \ VirtualStore \ Program Files \ appname \ settings.ini”。重定向功能仅为非高架32位应用程序提供,并且仅在它们不包含要求特定特权的清单时才提供。


1
不。没有“程序文件(x86)”到“程序文件”的重定向。有从C:\Windows\System32到的重定向C:\Windows\SysWOW64,但实际上这是指WOW64重定向器,而不是虚拟化重定向器。
Maximus 2012年

7

Journeyman Geek解释了什么是虚拟化。我将解释Windows如何确定虚拟化需求。

操作系统查找应用程序清单文件(或PE资源),如果根本找不到清单或该清单没有适当的compatibility部分-Windows会假定该应用程序“旧”并启用虚拟化。

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
 <application>
   <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
   <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
 </application>
</compatibility>

PS。虚拟化作品登记(分)按键喜欢HKEY_LOCAL_MACHINEHKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.