Header Ads Widget

Ticker

6/recent/ticker-posts

Administrador de control de servicios, administrador de sesiones y administrador de sesiones local

 Servicio - Administrador de sesiones (Smss)

El administrador de sesiones (% SystemRoot% \ System32 \ Smss.exe) es el primer proceso en modo de usuario creado en el sistema. Este proceso es creado por un subproceso del sistema en modo kernel que realiza la fase final de inicialización del tiempo de ejecución y del servicio del kernel.

Cuando se inicia Smss, comprueba si hay una primera instancia de él (el maestro de Smss) o su propia instancia iniciada por el maestro de Smss para crear una sesión. (Con argumentos de línea de comando, esta será la última instancia). Al crear múltiples instancias de sí mismo en el momento del arranque y crear una sesión de Terminal Services, Smss puede crear múltiples sesiones al mismo tiempo (máximo cuatro sesiones actuales, cuatro sesiones concurrentes, más uno más por cada CPU adicional excepto el primero).

Esta característica mejora el rendimiento del inicio de sesión en los sistemas de Terminal Services cuando varios usuarios están conectados al mismo tiempo. Cuando se completa la inicialización de la sesión, se cierra la copia de Smss. Como resultado, sólo permanece activo el proceso original Smss.exe.

El servicio de host de Smss realiza los siguientes pasos de inicialización únicos:

  1. Marca el proceso y el hilo de origen como críticos. (Si un proceso o subproceso marcado como crítico finaliza por algún motivo, Windows se bloquea.
  2. Aumenta la prioridad base del proceso a 11.
  3. Si el sistema admite la adición en caliente de procesadores, habilita la actualización automática de la afinidad del procesador para que las nuevas sesiones puedan aprovechar los nuevos procesadores cuando se agrega un nuevo procesador.smss.exe
  4. Crea canalizaciones con nombre y ranuras de correo que se utilizan para la comunicación entre Smss, Csrss y Lsm (se explica más adelante).
  5. Genere un puerto ALPC para recibir comandos.
  6. Crea variables de entorno de entorno de todo el sistema definidas en HKLM \ SYSTEM \ CurrentControlSet \ Control \ SessionManager \ Environment.
  7. producir enlaces simbólicos para dispositivos definidos en HKLM \ SYSTEM \ CurrentControlSet \ Control \ SessionManager \ DOSDevices en \ Global ?? en el espacio de nombres del administrador de objetos.
  8. Crea el directorio raíz \ Sessions en el espacio de nombres del administrador de objetos.
  9. Inicia los programas enumerados en HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ BootExecute. (De forma predeterminada, Autochk.exe aparece allí, que verifica el disco).
  10. Realiza una transferencia de archivo pendiente especificada en la sección HKLM \ SYSTEM \ CurrentControlSet \ Control \ SessionManager \ PendingFileRenameOperations.
  11. Inicializa los archivos de intercambio.
  12. Inicializa el resto del registro (software HKLM, SAM y claves de seguridad).
  13. Inicia los programas especificados en HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SetupExecute.
  14. Abre archivos DLL conocidos (HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ KnownDLLs) y los muestra como secciones persistentes (archivos mapeados).
  15. Hace que un hilo sea responsable de manejar las solicitudes de creación de sesiones.
  16. Crea un Smss para inicializar la sesión 0 (sesión no interactiva).
  17. Hace un SMS para inicializar la sesión 1 (sesión interactiva). Cuando se completan estos pasos, Smss entra en constante espera de un identificador para una instancia de sesión nula Csrss.exe. Dado que Csrss está etiquetado como crítico, si Csrss sale, esta espera debido a un bloqueo del sistema nunca termina.

La instancia de Smss que inicia la sesión hace lo siguiente:

  1. Llama a la función NtSetSystemInformation para solicitar la creación de una estructura de datos de sesión en modo kernel. Esto, a su vez, llama a la función interna del administrador de memoria MmSessionCreate, que configura el espacio de direcciones de la sesión virtual, que contendrá el grupo de sesiones no residentes y la estructura de datos de esta sesión, asignada por la parte del subsistema de Windows que se ejecuta en modo kernel (Win32k.sys) y otros controladores de dispositivo de espacio de sesión.
  2. Crea un proceso (s) de subsistema para la sesión (de forma predeterminada, Windows Subsystem Csrss.exe).
  3. Crea una instancia de Winlogon (para sesiones interactivas) o Wininit (para sesión 0). A continuación se proporcionará más información sobre estos dos procesos.

Luego, este proceso Smss intermedio sale (después de lo cual los procesos del subsistema permanecen y el proceso Winlogon o Wininit permanece como un proceso que no tiene un proceso principal).

Administrador de sesión local (Lsm.exe)

El Administrador de sesión local (Lsm.exe) administra el estado de las sesiones de Servicios de Terminal Server en la máquina local. Envía solicitudes a Smss para iniciar nuevas sesiones (por ejemplo, para crear procesos Csrss y Winlogon) a través del puerto ALPC del SmSsWinStationApiPort, como si el usuario seleccionara Cambiar de usuario en el Explorador. Lsm también admite la comunicación con Winlogon y Csrss (usando el sistema local RPC).

Informa a Csrss sobre eventos como conectarse, desconectarse, terminar y enviar un mensaje del sistema. Recibe una notificación del inicio de sesión de Win sobre los siguientes eventos:

  • Entrada y salida.
  • Iniciar y detener el caparazón.
  • Conexión a la sesión.
  • Desconectarse de la sesión.
  • Instale o desbloquee el escritorio.

lsm.exe

Experimento: Ver los detalles de un servicio en sus procesos.

Process Explorer destaca los procesos de host de uno o más servicios. La propiedad de resaltado se puede configurar eligiendo "Configurar colores" en el menú "Opciones". Si hace doble clic en el nombre de host del proceso de uno o más servicios, en la pestaña Servicios, puede ver una lista de servicios en el proceso, el nombre de la entrada de registro en la que se define el servicio, el nombre para mostrar que el el administrador ve, el texto de descripción del servicio (si hay alguno disponible) y para los servicios Svchost , la ruta a la DLL que implementa el servicio.

Por ejemplo, la lista de servicios en el proceso Svchost.exe que se ejecuta en la cuenta del sistema tiene este aspecto.

Administrador de control de servicios (SCM)

Recuerde que anteriormente un "servicio" en Windows significaba un proceso de servidor o un controlador de dispositivo. En esta sección, los servicios se denominan procesos en modo de usuario. Los servicios son similares a los “procesos demonio” de UNIX o los “procesos independientes” de VMS en que se pueden configurar para que se inicien automáticamente al arrancar el sistema sin requerir un inicio de sesión interactivo.

También se pueden iniciar manualmente (por ejemplo, iniciando la herramienta administrativa de Servicios o llamando a la función de Windows StartService). Normalmente, los servicios no interactúan con los usuarios que están conectados, aunque existen condiciones especiales que lo permiten.

El Administrador de control de servicios es un proceso de sistema especial que ejecuta la imagen% SystemRoot% \ System32 \ Services.exe y es responsable de iniciar, detener e interactuar con los procesos de servicio.

Gerente de control de servicios

Los programas de servicio son en realidad imágenes de Windows que llaman a funciones específicas de Windows para interactuar con el Administrador de control de servicios para realizar acciones como registrar un inicio exitoso del servicio, responder a las solicitudes de su estado o pausar o detener un servicio. Los servicios se definen en el registro en HKLM \ SYSTEM \ CurrentControlSet \ Services.

Tenga en cuenta que los servicios tienen tres nombres: el nombre del proceso que parece estar ejecutándose en el sistema, el nombre interno en el registro y el nombre que aparece en la herramienta de administración de Servicios. No todos los servicios tienen un nombre para mostrar.

Si el servicio no tiene un nombre para mostrar, se muestra su nombre interno.

En Windows, los servicios también pueden tener un campo de descripción que brinda una comprensión más profunda de lo que hace un servicio.

Para asignar un proceso de servicio a un servicio contenido en ese proceso, use el comando tlist / s o el comando tasklist / svc. Cabe señalar que no siempre existe una correspondencia uno a uno entre los procesos de servicio y los servicios en ejecución, porque algunos servicios comparten un proceso con otros servicios. El código de tipo que se encuentra en el registro indica si el servicio se está ejecutando en su propio proceso o comparte un proceso con el resto de los servicios de imágenes.

Varios componentes de Windows se implementan como servicios. Estos incluyen el Administrador de impresión, el Registro de eventos, el Programador de trabajos y varios componentes de red.

Experimento: enumerar los servicios instalados.

Para mostrar una lista de servicios instalados, seleccione Herramientas administrativas en el Panel de control y luego seleccione Servicios. El resultado debe ser información similar a la siguiente:

Para ver las propiedades detalladas de un servicio, haga clic con el botón derecho en el nombre del servicio y seleccione Propiedades. Por ejemplo, la siguiente figura muestra las propiedades de un servicio denominado Administrador de impresión.

Tenga en cuenta que el campo Ejecutable muestra el programa que contiene este servicio. Tenga en cuenta que algunos servicios comparten un proceso con otros servicios, por lo que no siempre es posible asignar un servicio a un proceso de manera inequívoca.

Publicar un comentario

0 Comentarios