Compte LocalSystem

Le compte LocalSystem est un compte local prédéfini utilisé par le gestionnaire de contrôle de service. Ce compte n’étant pas reconnu par le sous-système de sécurité, vous ne pouvez pas spécifier son nom dans un appel à la fonction LookupAccountName . Il dispose de privilèges étendus sur l’ordinateur local et agit en tant qu’ordinateur sur le réseau. Son jeton inclut les SID NT AUTHORITY\SYSTEM et BUILTIN\Administrators ; ces comptes ont accès à la plupart des objets système. Le nom du compte dans tous les paramètres régionaux est .\LocalSystem. Le nom LocalSystem ou ComputerName\LocalSystem peut également être utilisé. Ce compte n’a pas de mot de passe. Si vous spécifiez le compte LocalSystem dans un appel à la fonction CreateService ou ChangeServiceConfig , toutes les informations de mot de passe que vous fournissez sont ignorées.

Un service qui s’exécute dans le contexte du compte LocalSystem hérite du contexte de sécurité du SCM. Le SID utilisateur est créé à partir de la valeur SECURITY_LOCAL_SYSTEM_RID . Le compte n’est associé à aucun compte d’utilisateur connecté. Cela a plusieurs conséquences :

  • La clé de Registre HKEY_CURRENT_USER est associée à l’utilisateur par défaut, et non à l’utilisateur actuel. Pour accéder au profil d’un autre utilisateur, empruntez l’identité de l’utilisateur, puis accédez à HKEY_CURRENT_USER.
  • Le service peut ouvrir la clé de Registre HKEY_LOCAL_MACHINE\SECURITY.
  • Le service présente les informations d’identification de l’ordinateur aux serveurs distants.
  • Si le service ouvre une fenêtre de commande et exécute un fichier de lots, l’utilisateur peut appuyer sur Ctrl+C pour arrêter le fichier de lots et accéder à une fenêtre de commande avec des autorisations LocalSystem.

Le compte LocalSystem dispose des privilèges suivants :

  • SE_ASSIGNPRIMARYTOKEN_NAME (désactivé)
  • SE_AUDIT_NAME (activé)
  • SE_BACKUP_NAME (désactivé)
  • SE_CHANGE_NOTIFY_NAME (activé)
  • SE_CREATE_GLOBAL_NAME (activé)
  • SE_CREATE_PAGEFILE_NAME (activé)
  • SE_CREATE_PERMANENT_NAME (activé)
  • SE_CREATE_TOKEN_NAME (désactivé)
  • SE_DEBUG_NAME (activé)
  • SE_IMPERSONATE_NAME (activé)
  • SE_INC_BASE_PRIORITY_NAME (activé)
  • SE_INCREASE_QUOTA_NAME (désactivé)
  • SE_LOAD_DRIVER_NAME (désactivé)
  • SE_LOCK_MEMORY_NAME (activé)
  • SE_MANAGE_VOLUME_NAME (désactivé)
  • SE_PROF_SINGLE_PROCESS_NAME (activé)
  • SE_RESTORE_NAME (désactivé)
  • SE_SECURITY_NAME (désactivé)
  • SE_SHUTDOWN_NAME (désactivé)
  • SE_SYSTEM_ENVIRONMENT_NAME (désactivé)
  • SE_SYSTEMTIME_NAME (désactivé)
  • SE_TAKE_OWNERSHIP_NAME (désactivé)
  • SE_TCB_NAME (activé)
  • SE_UNDOCK_NAME (désactivé)

La plupart des services n’ont pas besoin d’un niveau de privilège aussi élevé. Si votre service n’a pas besoin de ces privilèges et qu’il ne s’agit pas d’un service interactif, envisagez d’utiliser le compte LocalService ou le compte NetworkService. Pour plus d’informations, consultez Sécurité des services et droits d’accès.