L’identifiant de sécurité (SID) est essentiel à la gestion des permissions Windows. Chaque utilisateur, groupe ou ordinateur se voit attribuer un SID unique dès sa création, qu’il soit local ou membre d’un domaine Active Directory. Ce SID est utilisé en arrière-plan pour contrôler l’accès aux dossiers partagés, aux clés de registre, aux fichiers, aux imprimantes, etc. Savoir trouver ou convertir un SID peut vous éviter bien des soucis, notamment pour résoudre des problèmes d’accès complexes ou pour rétablir les permissions après une reconstruction ou une migration. Ce guide explique comment trouver les SID, aussi bien pour les comptes locaux que pour ceux d’Active Directory, et comment les convertir en un nom lisible – une fonction très utile si vous obtenez une liste de SID à partir des journaux d’événements ou des messages d’erreur. Vous apprendrez à utiliser efficacement les outils en ligne de commande, les astuces PowerShell et à explorer le registre.
Comment trouver le SID d’un utilisateur ou d’un ordinateur sous Windows
Méthode 1 : Utilisation de PowerShell (la nouvelle méthode)
Les versions récentes de Windows (comme Windows 11 24H2 ou Windows Server 2025) ont détrôné PowerShell. Il est désormais plus fiable, car [nom du logiciel/outil manquant] wmicest en voie de disparition. Trouver le SID d’un utilisateur local avec PowerShell est assez simple et offre une certaine flexibilité si vous appréciez le scripting.
- Ouvrez PowerShell en tant qu’administrateur. Pour ce faire, cliquez avec le bouton droit sur le bouton Démarrer et choisissez Windows PowerShell (Admin).
- Exécutez cette commande :
(Get-CimInstance -Class win32_userAccount -Filter "name='test_user' and domain='$env:COMPUTERNAME'").SID
Cette fonction renvoie l’identifiant de sécurité (SID) de l’utilisateur test_user.
Notez que, dans certains environnements ou versions plus récentes de PowerShell, vous devrez peut-être l’utiliser Get-LocalUsersi elle est disponible :
Get-LocalUser -Name 'test_user' | Select-Object Name, SID- Ou listez tous les comptes locaux avec leurs SID :
Get-LocalUser | Select-Object Name, SID
Note : Si vous cherchez à associer un SID à un profil, vous pouvez consulter la base de registre à l’emplacement suivant : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList. Les noms des clés de registre correspondent aux SID et pointent vers les chemins d’accès aux profils. C’est la méthode la plus efficace pour établir ces liens lors de l’analyse des profils utilisateur.
Méthode 2 : Utilisation de l’invite de commandes avec WMIC
Si vous préférez l’ancienne ligne de commande, vous pouvez essayer : [commande à insérer] wmic. Notez que sur certaines versions récentes de Windows, cette commande a disparu, mais elle fonctionne encore sur de nombreuses configurations. Pour obtenir un SID d’utilisateur local : [commande à insérer].
- Ouvrir l’invite de commandes en tant qu’administrateur.
- Taper:
wmic useraccount where name='test_user' get sid
Si cela génère des erreurs, ou si vous êtes sur un système où wmicil est absent, il serait peut-être plus judicieux de rester avec PowerShell.
Astuce supplémentaire : Utilisation du module LocalAccounts de PowerShell
Pour une approche plus « native », notamment pour les tests ou le développement de scripts, essayez :
Get-LocalUser -Name 'test_user' | Select-Object Name, SID- Ou énumérez tout en une seule fois :
Get-LocalUser | Select-Object Name, SID
C’est un moyen rapide d’obtenir des SID sans passer par des épreuves compliquées.
Récupération du SID d’un utilisateur ou d’un groupe dans Active Directory
Active Directory a ses propres méthodes, mais les lignes de commande sont assez similaires. Pour récupérer le SID d’un utilisateur du domaine actuel :
- Ouvrez PowerShell avec le module Active Directory chargé. Si ce n’est pas le cas, vous devrez peut-être l’installer via les outils RSAT.
- Courir:
Get-ADUser -Identity 'jabrams' | select SID
Pour les groupes, remplacez Get-ADUserpar Get-ADGroup. Par exemple :
Get-ADGroup -Filter {Name -like "fr-sales-*"} | Select SID
Autre solution si vous ne souhaitez pas installer le module AD ou s’il est manquant : vous pouvez créer un objet SecurityIdentifier dans PowerShell, comme ceci :
$objUser = New-Object System. Security. Principal. NTAccount("domain\\username")$sid = $objUser. Translate([System. Security. Principal. SecurityIdentifier])- Cela permet d’afficher le SID dans un format lisible.
Comment obtenir le SID d’un ordinateur dans Active Directory ou en local
Si l’ordinateur est joint à un domaine Active Directory, il possède son propre SID (appelé SID machine).Pour l’obtenir dans Active Directory :
- Courir:
Get-ADComputer -Identity 'mun-rds1' -Properties sid | Select-Object Name, sid
Pour le SID de la machine locale, vous pouvez maintenant faire preuve de créativité :
- Utilisez l’ outil PsGetSid — téléchargez-le et exécutez-le
.\PsGetsid64.exe. - Ou bien, supprimez simplement les 4 derniers caractères du SID d’un utilisateur local, comme avec cet extrait de code PowerShell :
$sid = (Get-LocalUser 'Administrator').SID -replace ".{4}$"
Lors du clonage ou du déploiement d’images, il est crucial de réinitialiser le SID de la machine avec sysprep. Sans cela, des SID dupliqués dans un domaine peuvent rompre les relations d’approbation. Windows n’apprécie pas les identifiants dupliqués.
Conversion d’un SID en nom d’utilisateur ou de groupe
Il arrive parfois qu’un SID mystérieux apparaisse et que l’on souhaite savoir à quel compte il appartient. La méthode la plus simple avec PowerShell :
$sidObj = New-Object System. Security. Principal. SecurityIdentifier('S-1-5-21-XXXXXXXXXX')$ntAccount = $sidObj. Translate([System. Security. Principal. NTAccount])- Affiche le nom du compte, comme
DOMAIN\username.
Ou via WMIC, si le SID est toujours pertinent dans votre environnement :
wmic useraccount where sid='S-1-5-21-XXXXXXXXXX' get name
Même chose pour les objets AD, mais l’utilisation de cette méthode Get-ADObjectpeut être plus approfondie si vous recherchez des objets supprimés ou des éléments dans la Corbeille :
$sid = 'S-1-5-21-XXXXXX'Get-ADObject -IncludeDeletedObjects -Filter "objectSid -eq '$sid'" | Select-Object name, objectClass
Cela permet de déterminer à quel objet un SID fait référence, surtout s’il a été renommé ou déplacé. En pratique, c’est comme ça que ça fonctionne.
J’espère que cela permettra à certains de gagner du temps. Souvent, il suffit de savoir quelle commande donne quelles informations et quand, et de se rappeler que Windows peut parfois être capricieux avec les permissions et les identifiants. Ces astuces restent néanmoins efficaces : pas de magie, juste la bonne commande au bon moment.
Résumé
- Utilisez PowerShell ou WMIC pour trouver les SID des utilisateurs et groupes locaux.
- Utilisez les cmdlets AD ou les classes. NET pour les comptes de domaine.
- Consultez le registre ou la clé ProfileList pour obtenir les informations du profil utilisateur.
- Convertissez les SID en noms à l’aide d’objets PowerShell ou de WMIC.
Conclure
Comprendre les SID n’est pas sorcier une fois que vous avez les bonnes commandes. Parfois, il suffit d’exécuter les commandes PowerShell appropriées ou de fouiller dans le registre. Une fois ces éléments maîtrisés, le dépannage des permissions ou le nettoyage des comptes deviennent beaucoup plus simples. N’oubliez pas : à chaque clonage de machine ou modification de profils, réinitialiser le SID ou effectuer une nouvelle préparation système est essentiel pour éviter les problèmes ultérieurs. En espérant que cela vous aide. Bonne chance dans votre recherche de ces SID obscurs !