1 jun 2021

WLMS.exe: el amante de los reinicios

 ¡Muy buenas a todos!

Hoy os venimos a hablar de WLMS, mejor conocido como Windows License Monitoring Service, el servicio de Windows que permite gestionar las licencias de evaluación de las ISOs proporcionadas por Microsoft en su repositorio oficial.

Fig 1: Si tienes este registro... te han tongado con tu Windows.

¿Cómo funciona WLMS?

WLMS es un servicio presente en los sistemas Windows de evaluación encargado de gestionar la validez de las licencias de prueba. Este servicio es el encargado de controlar que dicha licencia expire dentro de los plazos establecidos y, en caso de hacerlo, realiza determinadas acciones, como añadir un cartelito indicando que la licencia ha expirado o programar un reinicio del sistema automáticamente cada hora.

Fig 2: Si solo notificara esto, hasta sería gracioso.

Ahora bien, la limitación de funcionalidades o la aparición de carteles informativos no suelen ser problemas para este tipo de máquinas virtuales, ya que, normalmente, el principal uso de estos entornos suele ser la realización de tests y despliegues de prueba. Sin embargo, la aparición de un reinicio forzado cada hora... ¿es necesario?

Fig 3: ¿Licencia inactiva? Pues te reinicio.

¿Cómo evitamos los reinicios?

Aunque en la documentación de Microsoft WLMS no exista (o, al menos, nosotros no hemos sido capaces de localizarlo), existen varios artículos donde comentan cómo funciona y posibles maneras de parar su funcionamiento. Obviamente, la manera más sencilla es la más óptima: deshabilitar el servicio.

Para ello, tenemos que tener en consideración los siguientes puntos:

  • El servicio WLMS se ejecuta con integridad de SYSTEM, por lo que necesitaremos dicha integridad para modificar los permisos y las características del mismo.
  • El servicio está definido de tal manera que, cuando exista un fallo en su ejecución, el equipo se reiniciará automáticamente. 
  • Aunque el servicio se desactive, es probable que el equipo se reinicie solo una última vez. A partir de ese reinicio, no debería volver a reiniciarse solo.
Fig 4: El servicio "intocable".

¿Cómo cambiamos las características de este servicio?

Como hemos comentado, necesitamos integridad de SYSTEM para poder modificar las propiedades del servicio. Para conseguir dicha integridad, tenemos varios mecanismos (como se detalla en este post). Nosotros, optaremos por la versión cómoda: Process Hacker. 

Fig 5: Process Hacker + Run as: Cmd as System.

Mediante Process Hacker, podremos obtener una consola con integridad de SYSTEM y, desde ella, podremos abrir el proceso services.msc para modificar los permisos de WLMS.

Fig 6: Abrimos services.msc como System.

Una vez tengamos el servicio de WLMS abierto, podremos modificar sus propiedades: deshabilitar el servicio y, por si acaso, quitar las acciones en caso de fallo del servicio.

Fig 7: Configuración final del servicio tras su modificación.

Si todo ha ido bien, tras reiniciar nuestra máquina (o esperar a que se reinicie sola), nuestro equipo de pruebas no volverá a reiniciarse solo nunca más, aunque la licencia haya expirado.

Fig 8: Más de 1 hora encendida y sin licencia...

Para terminar, si por un casual tenéis un laboratorio de pruebas con un Directorio Activo desplegado y todas vuestras máquinas son de evaluación, podéis desplegar una GPO que deshabilite dicho servicio en todo el parque, facilitando el proceso y evitando el uso de programas externos como Process Hacker o PsExec.

Fig 9: GPO para deshabilitar el servicio.

Nota: con la GPO solo se deshabilita el servicio, no se cambian las propiedades del mismo en caso de fallo... aunque si el servicio no se ejecuta, no debería haber fallos de ejecución, ¿no?

Fig 10: Aunque yo lo cambiaría de todas formas...

Happy Juanking!

1 comentario:

  1. Excelente solución. Funciona a las mil maravillas, gracias por el aporte

    ResponderEliminar