Что такое виртуализированный процесс?

10

Я установил MinGW и MSYS и никогда не задумывался о том, как работают двоичные файлы. Однако сегодня я открыл Process Explorer и понял, что у меня есть некоторые виртуализированные процессы:

Список процессов

Я знаю, что обычно make / gcc / sh / mintty для POSIX / unix-подобных систем, однако я подумал, что проекты MinGW / MSYS предоставят собственные исполняемые файлы. Виртуализация - это термин, который я ассоциирую с виртуальными машинами, и он меня немного смущает. Диспетчер задач фактически вызывает соответствующий столбец «Виртуализация UAC».

Так что же означает виртуализированный флаг в Windows? Это какой-то уровень совместимости для исполняемых файлов до Vista?

Zeta
источник
Краткий ответ: да, это уровень совместимости для исполняемых файлов до Vista. (Немного более длинный ответ: поскольку многие такие исполняемые файлы предполагали, что процесс всегда будет иметь права администратора, что в Vista было гораздо менее вероятно, что это правда.)
Гарри Джонстон

Ответы:

8

Это в основном файловая система и «оболочка» реестра, которая перенаправляет попытки записи в файл, если у пользователя нет необходимых прав записи, см. Статью в Википедии о UAC для получения дополнительной информации :

Приложения, написанные с предположением, что пользователь будет работать с правами администратора, испытывали проблемы в более ранних версиях 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, а не к перенаправителю виртуализации.
Максим
7

Подмастерье 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_MACHINEв HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.

Maximus
источник