Was ist ein virtualisierter Prozess?

10

Ich habe MinGW und MSYS installiert und mich nie wirklich darum gekümmert, wie die Binärdateien funktionieren. Heute habe ich jedoch den Prozess-Explorer geöffnet und festgestellt, dass ich einige virtualisierte Prozesse habe:

Prozessliste

Ich weiß, dass make / gcc / sh / mintty normalerweise für POSIX / unix-ähnliche Systeme ist, aber ich dachte, dass die MinGW / MSYS-Projekte native ausführbare Dateien bereitstellen würden. Virtualisiert ist normalerweise ein Begriff, den ich mit virtuellen Maschinen verbinde und der mich ein wenig verwirrt. Der Task-Manager ruft die entsprechende Spalte "UAC-Virtualisierung" auf.

Was bedeutet das virtualisierte Flag in Windows? Ist es eine Art Kompatibilitätsschicht für ausführbare Dateien vor Vista?

Zeta
quelle
Kurze Antwort: Ja, es ist eine Kompatibilitätsschicht für ausführbare Dateien vor Vista. (Etwas längere Antwort: Da viele solcher ausführbaren Dateien davon ausgegangen sind, dass der Prozess immer über Administratorrechte verfügt, was in Vista viel weniger wahrscheinlich ist.)
Harry Johnston

Antworten:

8

Es handelt sich im Grunde genommen um einen Dateisystem- und Registrierungs-Wrapper, der Dateischreibversuche umleitet, wenn der Benutzer nicht über die richtigen Schreibberechtigungen verfügt. Weitere Informationen finden Sie im Wikipedia-Artikel zur Benutzerkontensteuerung :

Bei Anwendungen, die mit der Annahme geschrieben wurden, dass der Benutzer mit Administratorrechten ausgeführt wird, traten in früheren Windows-Versionen Probleme auf, wenn sie von eingeschränkten Benutzerkonten ausgeführt wurden. Dies lag häufig daran, dass versucht wurde, in maschinenweite Verzeichnisse oder Systemverzeichnisse (z. B. Programme) oder Registrierungsschlüssel zu schreiben (insbesondere HKLM). Die Benutzerkontensteuerung versucht, dies mithilfe der Datei- und Registrierungsvirtualisierung zu verringern, die Schreibvorgänge (und nachfolgende Lesevorgänge) an einen Benutzerstandort innerhalb des Benutzerprofils umleitet.

Wenn eine Anwendung beispielsweise versucht, in ein Verzeichnis wie "C: \ Programme \ Anwendungsname \ settings.ini" zu schreiben, in das der Benutzer keine Schreibberechtigung hat, wird der Schreibvorgang auf "C: \ Benutzer \ Benutzername" umgeleitet \ AppData \ Local \ VirtualStore \ Programme \ appname \ settings.ini ". Die Umleitungsfunktion wird nur für nicht erhöhte 32-Bit-Anwendungen bereitgestellt und nur, wenn sie kein Manifest enthalten, das bestimmte Berechtigungen anfordert.

Gesellenfreak
quelle
1
Nee. Es gibt keine Umleitung von "Programmdateien (x86)" zu "Programme". Es gibt eine Umleitung von C:\Windows\System32nach C:\Windows\SysWOW64, aber tatsächlich bezieht sich dies auf den WOW64-Redirector und nicht auf den Virtualisierungs-Redirector.
Maximus
7

Geselle Geek erklärt, was Virtualisierung ist. Ich werde erklären, wie Windows den Bedarf an Virtualisierung ermittelt.

Das Betriebssystem sucht in der Anwendungsmanifestdatei (oder PE-Ressource) und wenn das Manifest überhaupt nicht gefunden wird oder keinen richtigen compatibilityAbschnitt hat, geht Windows davon aus, dass die Anwendung "alt" ist und aktiviert die Virtualisierung.

<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. Die Virtualisierung funktioniert für Registrierungs- (Unter-) Schlüssel wie HKEY_LOCAL_MACHINEgewünscht HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.

Maximus
quelle