Meldungen zur Layer-Integrität debuggen
Wenn Sie die Packaging Machine herunterfahren und Shutdown for Finalize ausführen, wird
uniservice.exe aufgerufen, um den aktuellen Status der Layer-Integrität abzurufen. Shutdown for Finalize prüft, ob noch erforderliche Prozesse ausstehen. Wenn ein erforderlicher Prozess nicht heruntergefahren wird, erhalten Sie eine Meldung über das ausstehende Problem. App Layering schreibt diese Informationen in die folgenden Protokolldateien:
C:\Program Files\Unidesk\Uniservice\Log\LayerIntegrity.txt C:\Program Files\Unidesk\Uniservice\Log\UniBilcLogs_X.txt
Sie können nicht genau wissen, welche
UniBilcLogs-Datei verwendet wird. Suchen Sie daher nach der Datei mit dem neuesten Zeitstempel. Suchen Sie nach „Integrity“.
Sie könnten denken, dass Sie die Layer-Integritätsprüfung umgehen können, indem Sie die Maschine herunterfahren und finalisieren. Wenn Sie dies jedoch versuchen, stoppt die App Layering Appliance die Aufgabe und kehrt zur Packaging Machine zurück. Das Skript Shutdown for Finalize muss den Layer-Finalisierungsprozess abschließen.
Warnungen zur Layer-Integrität
Die folgenden Meldungen zur Layer-Integrität zeigen Ihnen an, welche Operationen abgeschlossen werden müssen, bevor ein Layer zur Finalisierung bereit ist:
-
„Ein RunOnce-Skript steht aus – bitte überprüfen und starten Sie die Packaging Machine neu.“
-
„Ein Neustart nach der Installation steht aus – bitte überprüfen und starten Sie die Packaging Machine neu.“
-
„Eine Microsoft
ngen-Operation läuft im Hintergrund.“ -
„Eine MSI-Installationsoperation läuft – bitte überprüfen Sie die Packaging Machine.“
-
„Ein Neustart steht aus, um Treiber auf der Startdiskette zu aktualisieren – bitte überprüfen und starten Sie die Packaging Machine neu.“
-
„Eine Microsoft ngen-Operation ist erforderlich.“
-
„Software Center Client ist zur Ausführung konfiguriert, aber die SMSCFG.INI ist noch vorhanden.“
Sie können Meldungen zur Layer-Integrität nicht umgehen, indem Sie die Maschine herunterfahren. Die App Layering Software stoppt und kehrt zur Packaging Machine zurück, bis alle Prozesse abgeschlossen sind.
Wenn ein Microsoft-
NGen-Vorgang ausgeführt wird, können Sie versuchen, ihn zu beschleunigen, wie im nächsten Abschnitt beschrieben.
„Ein RunOnce-Skript ist unerledigt“
Wenn Sie einen Layer erstellen oder eine Version hinzufügen, können Sie ein Skript angeben, das beim ersten Anmelden eines Benutzers nach dem Start (oder Neustart) seines Desktops ausgeführt wird. Sie können beispielsweise ein RunOnce-Skript verwenden, um die Einrichtung einer Anwendung abzuschließen. Ein RunOnce-Skript ist eine
.cmd- oder .bat-Datei, die auf einem Layer installiert ist.
Nachdem ein RunOnce-Skript auf einem Image ausgeführt wurde, löscht Windows normalerweise die zugehörigen Registrierungsschlüssel beim Neustart. Diese Meldung weist darauf hin, dass Windows einen Schlüssel für ein RunOnce-Skript nicht von einem der folgenden Speicherorte gelöscht hat:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
So beheben Sie dieses Problem:
-
Wenn die Skriptdatei nicht mehr existiert, löschen Sie den Registrierungsschlüssel.
-
Wenn das in der Meldung referenzierte Skript existiert, führen Sie das Skript manuell aus und löschen Sie dann den Registrierungsschlüssel.
„Ein Neustart nach der Installation steht aus“
Diese Meldung stammt von einem der folgenden Registrierungsschlüssel:
-
HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations -
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending -
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired -
HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start -
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME -
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME
-
Wenn Sie einen dieser Einträge sehen, starten Sie zunächst neu. Starten Sie bei Bedarf mehrmals neu, bis Sie sicher sind, dass die Meldung keine echte Neustartanforderung einer Software ist.
-
Wenn das Problem bei Net Logon liegt, starten Sie den
Unidesk Service for Message Managementneu. -
Überprüfen Sie das Vorhandensein eines der ersten drei Registrierungsschlüssel aus der vorherigen Liste:
-
HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations -
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending -
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
-
-
Ändern Sie diese Schlüssel manuell nach Bedarf. Wenn Sie die Schlüssel nicht benötigen, können Sie sie löschen.
-
Suchen Sie nach Änderungen im Schlüssel
NetLogon, um festzustellen, ob:-
Der Wert sich von dem beim Start unterscheidet.
-
Der Computername sich vom aktiven Computernamen unterscheidet.
Wenn es eine Diskrepanz gibt, beheben Sie die Einstellung. -
-
Stellen Sie fest, ob ein Domänenbeitrittsvorgang noch auf einen Neustart wartet.
-
HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start -
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME -
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME
Sie können diese drei Registrierungsschlüssel nicht ändern, aber einige Software kann den SchlüsselNETLOGON\Startbei jedem Neustart ändern. -
Nachdem Sie die ersten drei in Schritt 1 aufgeführten Schlüssel bereinigt haben, erhalten Sie beim Neustart immer noch die Aufforderung. Sie können dann wählen, die Integritätsprüfungen der Ebene zu ignorieren. Dies ist jedoch ein letzter Ausweg und wird normalerweise nicht empfohlen. Einzelheiten zum Ignorieren von Integritätsprüfungen der Ebene finden Sie im Abschnitt „Letzter Ausweg“ am Ende dieses Artikels.
„Ein Microsoft ngen-Vorgang wird im Hintergrund ausgeführt“
Diese Meldung weist darauf hin, dass ein
NGEN-Vorgang im Vordergrund oder Hintergrund noch läuft. Ein NGEN-Vorgang ist ein Vorgang, bei dem .Net-Assemblies in native Images kompiliert werden. Die Meldung bedeutet, dass der Prozess noch läuft. Sie können den Fortschritt beobachten.
Warnung:
Starten Sie nicht neu, da dies dazu führen kann, dass der Prozess von vorne beginnt.
Um den Fortschritt im Vordergrund zu beobachten, führen Sie
ngen eqi 3 aus. Oder warten Sie und führen Sie ngen queue status regelmäßig aus, um zu sehen, wie der Prozess voranschreitet. Beachten Sie, dass die Ausführung von ngen queue status den Hintergrundprozess verlangsamt, da der Hintergrundprozess jedes Mal pausiert, wenn Sie seinen Status im Vordergrund überprüfen.
Es ist wichtig, die
NGEN-Prozesse beenden zu lassen. Seien Sie geduldig. Wenn Sie den Prozess abbrechen oder mitten im Vorgang neu starten, können Sie mit teilweise geschriebenen .Net-Assemblies enden.
Wenn ein Hintergrundprozess, wie z. B.
MSCORSVW.EXE (der NET-Laufzeit-Optimierungsdienst), nicht innerhalb eines Tages abgeschlossen ist, suchen Sie nach veralteten Hintergrundprozessen. Ein Neustart könnte helfen.
Sobald die folgenden Dienste abgeschlossen sind, können Sie fortfahren:
-
ngen.exe -
ngentask.exe -
mscorsvw.exe
„Ein MSI-Installationsvorgang wird ausgeführt“
Diese Meldung besagt, dass ein System-Mutex (Objekt zur gegenseitigen Ausschließung) namens
Global\_MSIExecute existiert. Das MSI-Installationsprogramm verwendet Global\_MSIExecute, um sicherzustellen, dass immer nur ein Installationsprogramm gleichzeitig ausgeführt wird. Wenn Sie sicher sind, dass keine MSI-Installationen stattfinden, könnte eine Ressource gesperrt sein. Gehen Sie zurück in den Layer und finden Sie heraus, welcher Prozess gesperrt ist.
„Ein Neustart steht aus, um Treiber auf der Startdiskette zu aktualisieren“
Diese Meldung weist darauf hin, dass ein Dienst oder Treiber, der für den Systemstart konfiguriert ist, geändert oder installiert wurde. Es ist wichtig, dass der geänderte Treiber erfolgreich starten kann.
Normalerweise müssen Sie einmal neu starten, und der Treiber funktioniert einwandfrei. Wir haben in einigen Fällen beobachtet, dass Software (wie Microsoft Defender oder McAfee) versucht, ihre Treiberdatei bei jedem Start zu ändern, wodurch diese Integritätsprüfung jedes Mal ausgelöst wird. Kein Neustart behebt dies. Möglicherweise müssen Sie die Option zum Umgehen der Layer-Integritätsprüfung verwenden, wie im folgenden Abschnitt „Letzter Ausweg“ erläutert.
„ein Microsoft NGen-Vorgang ist erforderlich“
Diese Meldung weist darauf hin, dass eine Anwendung auf der Verpackungsmaschine installiert wurde und Elemente zur Aktualisierung mit einer Prioritätsstufe von 3 geplant hat.
Bei dieser Prioritätsstufe wird der Vorgang nur ausgeführt, wenn die CPU im Leerlauf ist, und er wartet, bis keine Aktivität mehr vorhanden ist.
Um sicherzustellen, dass die Anwendung auf dem veröffentlichten Image optimal ausgeführt wird, blockiert App Layering den Finalisierungsprozess, da der
NGEN-Prozess auf der Verpackungsmaschine ausgeführt werden muss, anstatt auf jeder Maschine, auf der die App bereitgestellt wird.
Mit einem
NGEN eqi 3 (Prioritätsstufe 3) können Sie entweder:
-
Führen Sie die unvollendeten Vorgänge in beiden der folgenden Verzeichnisse aus:
-
c:\windows\microsoft.net\framework\vYY.MM.Build -
c:\windows\microsoft.net\framework64\v4.0.30319
-
-
Warten Sie. Der
NGEN-Vorgang wird in der Regel nach 15 Minuten Leerlaufzeit von selbst ausgeführt.
Die untersuchten Werte umfassen:
-
HKLM\SOFTWARE\Microsoft\\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending
-
HKLM\SOFTWARE\WOW6432Node\Microsoft\\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending
Ein Wert von 1 bedeutet, dass Arbeitselemente zur Verarbeitung in der Warteschlange stehen.
„Der Software Center Client ist zur Ausführung konfiguriert, aber die SMSCFG.INI ist immer noch vorhanden....“
Diese Meldung weist darauf hin, dass dieser Computer
ccmexec.exe als Dienst konfiguriert hat und nicht als deaktiviert konfiguriert ist.
Da wir wissen, dass alle auf einer Verpackungsmaschine erstellten Layer ordnungsgemäß versiegelt werden müssen, um in einer VDI-Umgebung korrekt bereitgestellt zu werden, überprüfen wir, ob
SMSCFG.ini nicht vorhanden ist. Es gibt eine Befehlsdatei, die Sie ganz am Ende des Layers ausführen können. Wir haben die auszuführenden Befehle in einer Batch-Befehlsdatei bereitgestellt, die Sie zum Versiegeln des Layers verwenden können. Melden Sie sich als Administrator bei einem Befehlsfenster an, um dieses Skript auszuführen:
c:\windows\setup\scripts\SEALSCCMCLIENT.cmd
Beschleunigen eines Microsoft NGen-Vorgangs
Die ausführbare Datei
NGEN ist der Microsoft Native Image Generator. Sie ist Teil des .NET-Systems. Ngen rekompiliert .NET-Bytecode in native Images und erstellt die Registrierungseinträge. Windows bestimmt, wann NGEN ausgeführt werden soll, basierend darauf, was installiert wird und was Windows in der Konfiguration erkennt. Wenn NGEN ausgeführt wird, lassen Sie es immer vollständig abschließen. Ein unterbrochener NGEN-Vorgang kann zu nicht funktionierenden .NET-Assemblies oder anderen Problemen im .NET-System führen.
Sie haben die Wahl, entweder darauf zu warten, dass der
NGEN-Prozess im Hintergrund abgeschlossen wird, oder ihn in den Vordergrund zu zwingen. Sie können auch den Status des NGEN-Vorgangs überprüfen, wie in den folgenden Schritten beschrieben. Jedes Mal, wenn Sie jedoch den Warteschlangenstatus überprüfen, erzeugen Sie Vordergrundaktivität, was dazu führen kann, dass die Hintergrundverarbeitung vorübergehend pausiert.
Das Verschieben des
NGEN-Prozesses in den Vordergrund ermöglicht es Ihnen, den Fortschritt anzuzeigen. Sie können den Layer finalisieren, wenn der Prozess abgeschlossen ist.
-
Verschieben Sie einen
NGEN-Vorgang in den Vordergrund. Normalerweise istNGENein Hintergrundvorgang und pausiert, wenn Vordergrundaktivität vorhanden ist. Das Verschieben der Aufgabe in den Vordergrund kann dazu beitragen, dass die Aufgabe so schnell wie möglich abgeschlossen wird. Gehen Sie dazu wie folgt vor:-
Öffnen Sie eine Eingabeaufforderung als Administrator.
-
Wechseln Sie in das Microsoft .NET Framework-Verzeichnis für die aktuell verwendete Version:
cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX -
Geben Sie den Befehl
NGENein, um die Elemente in der Warteschlange auszuführen:ngen eqi 3 -
Dies bringt die
NGEN-Aufgabe im Eingabeaufforderungsfenster in den Vordergrund und listet die zu kompilierenden Assemblies auf.Hinweis:Wenn Sie mehrere „Kompilierung fehlgeschlagen“-Meldungen erhalten, prüfen Sie im Task-Manager, ob eine Instanz vonMSCORSVW.EXEausgeführt wird. Wenn ja, lassen Sie sie abschließen oder führen SieNGEN eqi 3erneut aus. Starten Sie nicht neu, um die Aufgabe zu beenden. Die Aufgabe muss abgeschlossen werden.
-
-
Überprüfen Sie den Status eines
NGEN-Vorgangs-
Öffnen Sie eine Eingabeaufforderung als Administrator.
-
Überprüfen Sie den Status, indem Sie diesen Befehl ausführen:
NGEN queue status -
Wenn Sie den folgenden Status erhalten, ist die
NGENabgeschlossen, und Sie können den Layer finalisieren. Die.NET Runtime Optimization Serviceist beendet,
-
Letzter Ausweg bei Problemen mit der Layer-Integrität (NICHT empfohlen)
Wenn Sie einen Layer haben, der sich einfach nicht finalisieren lässt, können Sie einen Registrierungsschlüssel verwenden, um diesem einen Layer mitzuteilen, seine Layer-Integritätsprüfungen zu ignorieren.
Warnung: Verwenden Sie diesen Schlüssel nur als letzten Ausweg! App Layering hindert Sie unter diesen Umständen am Finalisieren. Wenn Sie einen Layer finalisieren, kann dies sowohl den Layer als auch die Images, die den Layer enthalten, irreparabel beschädigen. Versuchen Sie immer zuerst, das Problem innerhalb von Windows zu lösen!
So ignorieren Sie Layer-Integritätsmeldungen auf einem Layer (nicht empfohlen):
-
Führen Sie
regedit.exeaus und erstellen Sie diesen Schlüssel:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Uniservice: "BypassLayerCheck"=DWORD 1Der Wert spielt keine Rolle. Wichtig ist, dass der Wert existiert. Dieser Schritt blockiert Layer-Integritätsprüfungen auf einem Layer. Er ermöglicht die Finalisierung des Layers, unabhängig von den Schäden, die er dem Layer und den geschichteten Images, die ihn enthalten, zufügen kann.