App Layering

Depurar mensajes de integridad de capa

Cuando apaga la máquina de empaquetado y ejecuta Shutdown for Finalize, llama uniservice.exe para obtener el estado actual de integridad de la capa. Apagar para Finalizar está comprobando si los procesos requeridos aún están pendientes. Si un proceso requerido no se cierra, le da un mensaje sobre el problema pendiente. App Layering escribe esta información en los siguientes archivos de registro:

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

No puede saber exactamente qué UniBilcLogs archivo está usando, así que busque el que tiene la última marca de tiempo. Buscar “Integridad”.

Puede pensar que puede omitir la comprobación de integridad de la capa apagando la máquina y finalizándola. Pero si lo intenta, el dispositivo App Layering detiene la tarea y le devuelve a la máquina de empaquetado. El script Shutdown for Finalize tiene que completar el proceso de finalización de la capa.

Advertencias de integridad de capa

Los siguientes mensajes de integridad de capa le indican qué operaciones en cola deben completarse antes de que una capa esté lista para finalizar:

  • “Un script de RunOnce es excepcional: compruebe y reinicie la máquina de empaquetado.”
  • “Un reinicio posterior a la instalación está pendiente; compruebe y reinicie la máquina de empaquetado.”
  • «Una ngen operación de Microsoft está en curso en segundo plano. «
  • “Una operación de instalación de MSI está en curso; compruebe la máquina de empaquetado.”
  • “Está pendiente un reinicio para actualizar los controladores en el disco de arranque; compruebe y reinicie la máquina de empaquetado.”
  • “Se necesita una operación de Microsoft ngen.”
  • “Software Center Client está configurado para ejecutarse, pero SMSCFG.INI todavía está presente.”

No puede omitir los mensajes de integridad de capa apagando el equipo. El software App Layering se detiene y le devuelve a la máquina de empaquetado hasta que todos los procesos se hayan completado.

Si una NGen operación de Microsoft está en curso, puede intentar acelerarla, como se describe en la siguiente sección.

“Un script de RunOnce es excepcional”

Al crear una capa o agregar una versión a la misma, puede especificar un script para que se ejecute la primera vez que un usuario inicie sesión después de que se inicie el escritorio (o se reinicie). Por ejemplo, puede utilizar un script Ejecutar una vez para completar la configuración de una aplicación. Un script Ejecutar una vez es un .bat archivo .cmd o instalado en una capa.

Después de ejecutar un script Ejecutar una vez en una imagen, Windows normalmente elimina las claves del Registro asociadas cuando se reinicia. Este mensaje le indica que Windows no eliminó una clave para un script Ejecutar una vez desde una de estas ubicaciones:

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

Para solucionar este problema:

  • Si el archivo de script ya no existe, elimine la clave del Registro.
  • Si existe el script a la que se hace referencia en el mensaje, ejecute manualmente el script y, a continuación, elimine la clave del Registro.

“Un reinicio posterior a la instalación está pendiente”

Este mensaje se origina con cualquiera de las siguientes claves del Registro:

  • 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 ve una de estas entradas, comience reiniciando. Reinicie varias veces si es necesario, hasta que esté seguro de que el mensaje no es una solicitud de reinicio real por parte de algún software.

  2. Si el problema es con el inicio de sesión de red, reinicie el Unidesk Service for Message Management.

  3. Compruebe la existencia de una de las tres primeras claves del Registro de la lista anterior:

    • 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. Modifique manualmente cualquiera de estas teclas para adaptarse a sus necesidades. Si no necesita las claves, puede eliminarlas.

  5. Busque cambios en la NetLogon clave, para ver si:

    • El valor es diferente de lo que era en el inicio.
    • El nombre del equipo es diferente al nombre del equipo activo.

    Si hay una discrepancia, corrija la configuración.

  6. Determine si una operación de unión de dominio sigue esperando un reinicio.

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

    No puede modificar estas tres claves del Registro, pero algunos programas pueden modificar la NETLOGON\Start clave en cada reinicio.

Después de limpiar las tres primeras claves enumeradas en el paso #1, sigue recibiendo el mensaje al reiniciar, puede optar por ignorar las comprobaciones de integridad de capa. Sin embargo, este es un último recurso y normalmente no se recomienda. Para obtener detalles acerca de cómo ignorar las comprobaciones de integridad de capa, consulte la sección “Último recurso” al final de este artículo.

«Una ngen operación de Microsoft está en curso en segundo plano»

Este mensaje le indica que una NGEN operación en primer plano o en segundo plano aún está en curso. Una NGEN operación es donde los .Net ensamblados se compilan en imágenes nativas. El mensaje significa que el proceso todavía está en curso. Puede ver el progreso.

Advertencia:

No reinicie, ya que puede hacer que el proceso comience de nuevo.

Para ver el progreso en primer plano, ejecute ngen eqi 3. O bien, espere y ejecute ngen queue status periódicamente para ver cómo progresa el proceso. Tenga en cuenta que la ejecución ngen queue status ralentiza el proceso en segundo plano, ya que el proceso en segundo plano se detiene cada vez que comprueba su estado en primer plano.

Es importante dejar que los NGEN procesos terminen. Sé paciente. Si finaliza el proceso o reinicia en el medio, puede terminar con .Net ensamblados parcialmente escritos.

Si un proceso en segundo plano, como MSCORSVW.EXE (el servicio de optimizaciónen NET tiempo de ejecución) no termina en un día, compruebe si hay procesos en segundo plano obsoletos. Un reinicio podría ayudar.

Una vez que los siguientes servicios hayan terminado de ejecutarse, puede continuar:

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

“Una operación de instalación de MSI está en curso”

Este mensaje dice que Global\_MSIExecute existe un mutex del sistema (objeto de exclusión mutua) llamado. El instalador MSI utiliza Global\_MSIExecute para asegurarse de que sólo se ejecuta un instalador a la vez. Si está seguro de que no se están produciendo instalaciones MSI, es posible que haya un bloqueo en un recurso. Vuelva a la capa y averigüe qué proceso está bloqueado.

“Un reinicio está pendiente para actualizar los controladores en el disco de arranque”

Este mensaje le indica que se ha modificado o instalado un servicio o controlador configurado para iniciarse en el momento del arranque del sistema. Es importante que el controlador modificado pueda arrancar correctamente.

Normalmente necesita reiniciar una vez, y el controlador funciona bien. En algunas ocasiones hemos visto que software (como Microsoft Defender o McAfee) intenta modificar su archivo de controlador en cada arranque, activando esta comprobación de integridad cada vez. No hay reinicios, claro. Es posible que necesite utilizar la opción de omitir la comprobación de integridad de la capa, como se explica en la sección siguiente, “Último recurso”.

«se necesita una NGen operación de Microsoft»

Este mensaje le indica que se instaló una aplicación en la máquina de empaquetado y que programó que los elementos se actualizaran con un nivel de prioridad de 3.

En este nivel de prioridad, la operación solo se ejecuta cuando la CPU está inactiva y está esperando hasta que no haya más actividad.

Para asegurarse de que la aplicación se ejecuta de la manera más óptima en la imagen publicada, App Layering bloquea el proceso de finalización, ya que el NGEN proceso debe ejecutarse en la máquina de empaquetado, en lugar de en cada máquina donde se implementa la aplicación.

Con un NGEN eqi 3 (nivel de prioridad 3), puede:

  • Ejecute las operaciones sin terminar en los dos directorios siguientes:

    • c:\windows\microsoft.net\framework\vYY.MM.Build
    • c:\windows\microsoft.net\framework64\v4.0.30319
  • Espera. La NGEN operación normalmente se ejecuta por sí sola después de 15 minutos de tiempo de inactividad.

Los valores que se examinan incluyen:

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

Un valor de 1 significa que hay elementos de trabajo en cola para ser procesados.

“Software Center Client está configurado para ejecutarse, pero SMSCFG.INI sigue presente…”

Este mensaje le indica que este equipo se ha ccmexec.exe configurado como un servicio y que no está configurado como deshabilitado.

Dado que sabemos que cualquier capa creada en una máquina de empaquetado debe sellarse correctamente para implementarse correctamente en un entorno VDI, estamos comprobando que no SMSCFG.ini está presente. Hay un archivo de comandos para que se ejecute al final de la capa. Hemos proporcionado los comandos para ejecutarse en un archivo de comandos por lotes que puede utilizar para sellar la capa. Inicie sesión en una ventana de comandos como administrador para ejecutar este script:

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

Aceleración de una NGen operación de Microsoft

El NGEN ejecutable es el Generador de imágenes nativas de Microsoft. Es parte del .NET sistema. Ngen vuelve a compilar código de .NET bytes en imágenes nativas y construye las entradas del registro. Windows determina cuándo ejecutarse en NGEN función de lo que se está instalando y lo que Windows detecta en la configuración. Cuando NGEN se está ejecutando, siempre deja que se complete. Una NGEN operación interrumpida puede dejarle con .NET ensamblados que no funcionan u otros problemas en el .NET sistema.

Tiene la opción de esperar a que el NGEN proceso se complete en segundo plano o forzarlo al primer plano. También puede comprobar el estado de la NGEN operación, tal y como se describe en los pasos siguientes. Sin embargo, cada vez que comprueba el estado de la cola, está creando actividad en primer plano, lo que podría hacer que el procesamiento en segundo plano se detenga temporalmente.

Llevar el NGEN proceso al primer plano le permite ver el progreso. Puede finalizar la capa cuando finalice el proceso.

  1. Traiga una NGEN operación al primer plano. Normalmente, NGEN es una operación en segundo plano y se detiene si hay actividad en primer plano. Llevar la tarea a primer plano puede ayudar a que la tarea se complete lo más rápido posible. Para hacerlo:
    1. Abra un símbolo del sistema como Administrador.
    2. Vaya al directorio de Microsoft.NET Framework para la versión actualmente en uso:

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

    3. Introduzca el NGEN comando para ejecutar los elementos en cola: ngen eqi 3 <!--NeedCopy-->
    4. Esto lleva la NGEN tarea al primer plano en el símbolo del sistema y enumera los ensamblados que se están compilando.

      Nota:

      Si recibe varios mensajes de «error de compilación», busque en el Administrador de tareas para ver si MSCORSVW.EXE se está ejecutando una instancia de. Si es así, permita que se complete, o vuelva a ejecutar NGEN eqi 3. No reinicie para detener la tarea. La tarea debe completarse.

  2. Comprobar el estado de una NGEN operación
    1. Abra un símbolo del sistema como Administrador.
    2. Compruebe el estado ejecutando este comando: NGEN queue status
    3. Cuando recibe el siguiente estado, el NGEN se completará y puede finalizar la capa. El .NET Runtime Optimization Service se detiene,

Último recurso para manejar un problema de integridad de capa (NO recomendado)

Si tiene una capa que simplemente no puede llegar a finalizarse, puede usar una clave del Registro para decirle a esa capa que ignore sus comprobaciones de integridad de capa.

Advertencia: ¡Utilice esta llave solo como último recurso! App Layering le bloquean la finalización en estas circunstancias. Permitirle finalizar una capa puede dañar irreparablemente tanto la capa como las imágenes que la incluyen. ¡Intenta siempre resolver el problema dentro de Windows primero!

Para ignorar los mensajes de integridad de capa en una capa (no recomendado):

  1. Ejecute regedit.exe y cree esta clave:

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

    El valor no importa. Lo que importa es que el valor existe. Este paso bloquea las comprobaciones de integridad de capa en una capa. Permite finalizar la capa, independientemente del daño que pueda causar a la capa y a las imágenes en capas que la incluyen.