Co to jest zwirtualizowany proces?

10

Mam zainstalowane MinGW i MSYS i nigdy tak naprawdę nie dbałem o to, jak działają pliki binarne. Jednak dzisiaj otworzyłem Process Explorer i zdałem sobie sprawę, że mam pewne zwirtualizowane procesy:

Lista procesów

Wiem, że zazwyczaj make / gcc / sh / mintty są przeznaczone dla systemów podobnych do POSIX / unix, ale myślałem, że projekty MinGW / MSYS zapewnią natywne pliki wykonywalne. Zwirtualizowane jest zwykle terminem, który kojarzy mi się z maszynami wirtualnymi i trochę mnie dezorientuje. Menedżer zadań faktycznie wywołuje odpowiednią kolumnę „wirtualizacja UAC”.

Co więc oznacza zwirtualizowana flaga w systemie Windows? Czy jest to jakaś warstwa zgodności dla plików wykonywalnych starszych niż Vista?

Zeta
źródło
Krótka odpowiedź: tak, jest to warstwa zgodności dla plików wykonywalnych starszych niż Vista. (Nieco dłuższa odpowiedź: ponieważ wiele takich plików wykonywalnych zakładało, że proces zawsze będzie miał uprawnienia administratora, co w Vistie było znacznie mniej prawdopodobne).
Harry Johnston,

Odpowiedzi:

8

Jest to w zasadzie „opakowanie” systemu plików i rejestru, które przekierowuje próby zapisu pliku, jeśli użytkownik nie ma odpowiednich uprawnień do zapisu, więcej informacji można znaleźć w artykule na temat UAC w Wikipedii :

Aplikacje napisane przy założeniu, że użytkownik będzie działał z uprawnieniami administratora, napotykały problemy we wcześniejszych wersjach systemu Windows, gdy były uruchamiane z ograniczonych kont użytkowników, często dlatego, że próbowały pisać do katalogów całego komputera lub systemowych (takich jak Pliki Programów) lub kluczy rejestru (zwłaszcza HKLM). Kontrola konta użytkownika próbuje to złagodzić za pomocą wirtualizacji plików i rejestru, która przekierowuje zapisy (i kolejne odczyty) do lokalizacji użytkownika w profilu użytkownika.

Na przykład, jeśli aplikacja spróbuje zapisać w katalogu takim jak „C: \ Program Files \ appname \ settings.ini”, do którego użytkownik nie ma uprawnień do zapisu, zapis zostanie przekierowany do „C: \ Users \ nazwa użytkownika \ AppData \ Local \ VirtualStore \ Program Files \ appname \ settings.ini ". Funkcja przekierowania jest dostępna tylko dla 32-bitowych aplikacji z podwyższonym poziomem uprawnień i tylko wtedy, gdy nie zawierają manifestu żądającego określonych uprawnień.

Journeyman Geek
źródło
1
Nie. Nie ma przekierowania „plików programu (x86)” na „Pliki programów”. Istnieje przekierowanie od C:\Windows\System32do C:\Windows\SysWOW64, ale w rzeczywistości dotyczy to przekierowania WOW64, a nie przekierowania wirtualizacji.
Maximus,
7

Journeyman Geek wyjaśnia, czym jest wirtualizacja. Wyjaśnię, w jaki sposób system Windows określa potrzebę wirtualizacji.

System operacyjny szuka pliku manifestu aplikacji (lub zasobu PE) i jeśli manifest nie został w ogóle znaleziony lub nie ma odpowiedniej compatibilitysekcji - Windows zakłada, że ​​aplikacja jest „stara” i umożliwia wirtualizację.

<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. Wirtualizacja umożliwia dostęp na rejestrze (sub) klawisze podoba HKEY_LOCAL_MACHINEsię HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.

Maximus
źródło