App Layering

Messages de débogage d’intégrité de

Lorsque vous arrêtez la machine d’packaging et exécutez Shutdown for Finalize, il appelle pour uniservice.exe obtenir l’état actuel d’intégrité de la couche. Arrêter pour Finalize vérifie si des processus requis sont toujours en attente. Si un processus requis ne s’arrête pas, il vous envoie un message sur le problème en attente. App Layering écrit ces informations dans les fichiers journaux suivants :

C:\Program Files\Unidesk\Uniservice\Log\LayerIntegrity.txt C:\Program Files\Unidesk\Uniservice\Log\UniBilcLogs_X.txt

Vous ne pouvez pas savoir exactement quel UniBilcLogs fichier il utilise, alors recherchez celui avec le dernier horodatage. Rechercher « Intégrité ».

Vous pourriez penser que vous pouvez contourner le contrôle d’intégrité de la couche en arrêtant la machine et en la finalisant. Mais si vous essayez, l’appliance App Layering arrête la tâche et vous renvoie à la machine de packaging. Le script Shutdown for Finalize doit terminer le processus de finalisation de la couche.

Avertissements sur l’intégrité

Les messages d’intégrité de couche suivants vous indiquent les opérations en file d’attente qui doivent être terminées avant qu’une couche soit prête à finaliser :

  • “Un script RunOnce est exceptionnel - veuillez vérifier et redémarrer la machine de packaging.”
  • “Un redémarrage post-installation est en attente. Veuillez vérifier et redémarrer la machine de packaging.”
  • « Une ngen opération Microsoft est en cours en arrière-plan. «
  • “Une opération d’installation MSI est en cours - veuillez vérifier la machine de packaging.”
  • “Un redémarrage est en attente pour la mise à jour des pilotes sur la disquette de démarrage. Veuillez vérifier et redémarrer la machine de packaging.”
  • « Une opération Microsoft ngen est nécessaire.«
  • « Software Center Client est configuré pour s’exécuter, mais SMSCFG.INI est toujours présent.«

Vous ne pouvez pas contourner les messages d’intégrité de la couche en arrêtant la machine. Le logiciel App Layering s’arrête et vous renvoie à la machine de packaging jusqu’à ce que tous les processus soient terminés.

Si une NGen opération Microsoft est en cours, vous pouvez essayer de l’accélérer, comme décrit dans la section suivante.

« Un script RunOnce est exceptionnel »

Lorsque vous créez une couche ou y ajoutez une version, vous pouvez spécifier un script à exécuter la première fois qu’un utilisateur se connecte après le démarrage (ou le redémarrage) de son bureau. Par exemple, vous pouvez utiliser un script Exécuter une fois pour terminer la configuration d’une application. Un script Exécuter une fois est un .bat fichier .cmd ou installé sur une couche.

Après l’exécution d’un script Exécuter une fois sur une image, Windows supprime normalement les clés de Registre associées lors du redémarrage. Ce message vous indique que Windows n’a pas supprimé une clé pour un script Exécuter une fois à partir de l’un des emplacements suivants :

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ RunOnce

Pour résoudre ce problème :

  • Si le fichier de script n’existe plus, supprimez la clé de Registre.
  • Si le script référencé dans le message existe, exécutez manuellement le script, puis supprimez la clé de Registre.

« Un redémarrage post-installation est en attente »

Ce message provient de l’une des clés de Registre suivantes :

  • 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
  1. Si l’une de ces entrées s’affiche, commencez par redémarrer. Redémarrez plusieurs fois si nécessaire, jusqu’à ce que vous soyez sûr que le message n’est pas une véritable demande de redémarrage de certains logiciels.

  2. Si le problème concerne l’ouverture de session réseau, redémarrez le Unidesk Service for Message Management.

  3. Vérifiez l’existence de l’une des trois premières clés de Registre de la liste précédente :

    • 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
  4. Modifiez manuellement l’une de ces clés en fonction de vos besoins. Si vous n’avez pas besoin des clés, vous pouvez les supprimer.

  5. Recherchez les modifications apportées à la NetLogon clé, pour voir si :

    • La valeur est différente de ce qu’elle était au démarrage.
    • Le nom de l’ordinateur est différent du nom de l’ordinateur actif.

    S’il y a une divergence, corrigez le paramètre.

  6. Déterminez si une opération de jointure de domaine est toujours en attente d’un redémarrage.

    • HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start
    • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME
    • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME

    Vous ne pouvez pas modifier ces trois clés de Registre, mais certains logiciels peuvent modifier la NETLOGON\Start clé à chaque redémarrage.

Après avoir nettoyé les trois premières clés répertoriées à l’étape #1, vous obtenez toujours l’invite au redémarrage, vous pouvez choisir d’ignorer les vérifications d’intégrité de la couche. Toutefois, il s’agit d’un dernier recours et il n’est normalement pas recommandé. Pour plus d’informations sur la façon d’ignorer les contrôles d’intégrité de la couche, consultez la section « Dernier recours » à la fin de cet article.

« Une ngen opération Microsoft est en cours en arrière-plan »

Ce message vous indique qu’une NGEN opération de premier plan ou d’arrière-plan est toujours en cours. Une NGEN opération est l’endroit où les .Net assemblages sont compilés en images natives. Le message signifie que le processus est toujours en cours. Vous pouvez regarder les progrès.

Avertissement :

Ne redémarrez pas, car cela peut provoquer un recommencement du processus.

Pour regarder la progression au premier plan, exécutez ngen eqi 3. Ou attendez et exécutez ngen queue status périodiquement pour voir comment le processus progresse. Gardez à l’esprit que l’exécution ngen queue status ralentit le processus d’arrière-plan, car le processus d’arrière-plan s’arrête chaque fois que vous vérifiez son état au premier plan.

Il est important de laisser les NGEN processus se terminer. Sois patient. Si vous mettez fin au processus ou redémarrez au milieu, vous pouvez vous retrouver avec des .Net assemblages partiellement écrits.

Si un processus en arrière-plan, tel que MSCORSVW.EXE (le service d’optimisationd’ NET exécution) n’est pas terminé en une journée, vérifiez les processus d’arrière-plan obsolètes. Un redémarrage peut vous aider.

Une fois l’exécution des services suivants terminée, vous pouvez continuer :

  • ngen.exe
  • ngentask.exe
  • mscorsvw.exe

« Une opération d’installation MSI est en cours »

Ce message indique qu’un mutex système (objet d’exclusion mutuelle) nommé Global\_MSIExecute existe. Le programme d’installation MSI utilise Global\_MSIExecute pour s’assurer qu’un seul programme d’installation s’exécute à la fois. Si vous êtes certain qu’aucune installation MSI ne se produit, il peut y avoir un verrou sur une ressource. Retournez dans la couche et déterminez quel processus est verrouillé.

« Un redémarrage est en attente pour mettre à jour les pilotes sur le disque de démarrage »

Ce message vous indique qu’un service ou un pilote configuré pour démarrer au moment du démarrage du système a été modifié ou installé. Il est important que le pilote modifié puisse démarrer correctement.

Normalement, vous devez redémarrer une fois, et le pilote fonctionne bien. Nous avons parfois vu des logiciels (comme Microsoft Defender ou McAfee) tenter de modifier son fichier de pilote à chaque démarrage, déclenchant cette vérification d’intégrité à chaque fois. Pas de redémarrages effacer. Vous devrez peut-être utiliser l’option de contourner la vérification de l’intégrité de la couche, comme expliqué dans la section ci-dessous, « Dernier recours ».

« une NGen opération Microsoft est nécessaire »

Ce message vous indique qu’une application a été installée sur la machine d’packaging et qu’elle a planifié la mise à jour des éléments à un niveau de priorité de 3.

À ce niveau de priorité, l’opération ne s’exécute que lorsque le CPU est inactif, et elle attend qu’il n’y ait plus d’activité.

Pour garantir que l’application fonctionne de la manière la plus optimale sur l’image publiée, App Layering bloque le processus de finalisation, car le NGEN processus doit s’exécuter sur la machine d’packaging, plutôt que sur chaque machine sur laquelle l’application est déployée.

Avec un NGEN eqi 3 (niveau de priorité 3), vous pouvez soit :

  • Exécutez les opérations non terminées dans les deux répertoires suivants :

    • c:\windows\microsoft.net\framework\vYY.MM.Build
    • c:\windows\microsoft.net\framework64\v4.0.30319
  • Attends. L’ NGEN opération s’exécute généralement seule après 15 minutes de temps d’inactivité.

Les valeurs examinées sont les suivantes :

  • HKLM\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending

Une valeur de 1 signifie qu’il y a des éléments de travail mis en file d’attente pour être traités.

« Software Center Client est configuré pour s’exécuter, mais le SMSCFG.INI est toujours présent…«

Ce message vous indique que cette machine a été ccmexec.exe configurée en tant que service et qu’elle n’est pas configurée comme désactivée.

Comme nous savons que toutes les couches créées sur une machine d’packaging doivent être correctement scellées pour être déployées correctement dans un environnement VDI, nous vérifions que le n’ SMSCFG.ini est pas présent. Il existe un fichier de commandes que vous pouvez exécuter à la toute fin de la couche. Nous avons fourni les commandes à exécuter dans un fichier de commandes par lots que vous pouvez utiliser pour sceller la couche. Connectez-vous à une fenêtre de commande en tant qu’administrateur pour exécuter ce script :

c:\windows\setup\scripts\SEALSCCMCLIENT.cmd

Accélérer une NGen opération Microsoft

L’ NGEN exécutable est Microsoft Native Image Generator. Cela fait partie du .NET système. Ngen recompile le code .NET octet en images natives et construit les entrées du Registre. Windows détermine quand s’exécuter en NGEN fonction de ce qui est installé et de ce que Windows détecte dans la configuration. Quand NGEN est en cours d’exécution, laissez-le toujours terminer. Une NGEN opération interrompue peut vous laisser avec des .NET assemblages infonctionnels ou d’autres problèmes dans le .NET système.

Vous avez le choix d’attendre que le NGEN processus se termine en arrière-plan, ou de le forcer au premier plan. Vous pouvez également vérifier l’état de l’ NGEN opération, comme décrit dans les étapes suivantes. Toutefois, chaque fois que vous vérifiez l’état de la file d’attente, vous créez une activité de premier plan, ce qui peut entraîner une pause temporaire du traitement en arrière-plan.

Amener le NGEN processus au premier plan vous permet de visualiser les progrès. Vous pouvez finaliser la couche lorsque le processus est terminé.

  1. Apportez une NGEN opération au premier plan. Normalement, NGEN est une opération en arrière-plan et se met en pause s’il y a une activité de premier plan. La mise en avant de la tâche peut aider la tâche à se terminer le plus rapidement possible. Pour ce faire :
    1. Ouvrez une invite de commandes en tant qu’administrateur.
    2. Accédez au répertoire Microsoft .NET Framework pour la version actuellement utilisée :

      cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX

    3. Entrez la NGEN commande pour exécuter les éléments en file d’attente : ngen eqi 3 <!--NeedCopy-->
    4. Cela amène la NGEN tâche au premier plan dans l’invite de commande et répertorie les assemblys en cours de compilation.

      Remarque :

      Si vous recevez plusieurs messages « échec de compilation », regardez dans le Gestionnaire des tâches pour voir si une instance de MSCORSVW.EXE est en cours d’exécution. Si c’est le cas, laissez-le terminer ou réexécuter NGEN eqi 3. Ne redémarrez pas pour arrêter la tâche. La tâche doit être terminée.

  2. Vérifier l’état d’une NGEN opération
    1. Ouvrez une invite de commandes en tant qu’administrateur.
    2. Vérifiez l’état en exécutant cette commande : NGEN queue status
    3. Lorsque vous recevez le statut suivant, le NGEN est terminé et vous pouvez finaliser la couche. Le .NET Runtime Optimization Service est arrêté,

Dernier recours pour traiter un problème d’intégrité de la couche (NO recommandé)

Si vous avez une couche qui ne parvient tout simplement pas à finaliser, vous pouvez utiliser une clé de Registre pour indiquer à cette couche d’ignorer ses vérifications d’intégrité de la couche.

Attention : N’utilisez cette clé qu’en dernier recours ! App Layering vous empêche de finaliser dans ces circonstances. Vous permettre de finaliser un couche peut nuire de façon irréparable à la fois au couche et aux images qui incluent le couche. Essayez toujours de résoudre le problème dans Windows d’abord !

Pour ignorer les messages d’intégrité de couche sur une couche (non recommandé) :

  1. Exécutez regedit.exe et créez cette clé :

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Uniservice: "BypassLayerCheck"=DWORD 1<!--NeedCopy-->

    La valeur n’a pas d’importance. Ce qui importe, c’est que la valeur existe. Cette étape bloque les contrôles d’intégrité de la couche sur une couche. Il permet de finaliser le couche, quel que soit le préjudice qu’il peut causer au couche et aux images en couches qui l’incluent.