Nous avons une application qui installe SQL Server Express à partir de la ligne de commande et spécifie le compte de service en tant que compte LocalSystem via le paramètre SQLACCOUNT = "NT AUTHORITY \ SYSTEM".Déterminer le nom du compte LocalSystem en utilisant C#
Cela ne fonctionne pas avec différentes langues car le nom de compte pour LocalSystem est différent. Il y a un tableau répertoriant les différences ici:
http://forums.microsoft.com/MSR/ShowPost.aspx?PostID=685354&SiteID=37
Cela ne semble pas être complète (la version suédoise ne figure pas). Donc j'aimerais pouvoir déterminer le nom par programme, peut-être en utilisant le SID?
J'ai trouvé un script VB pour ce faire:
Set objWMI = GetObject("winmgmts:root\cimv2")
Set objSid = objWMI.Get("Win32_SID.SID='S-1-5-18'")
MsgBox objSid.ReferencedDomainName & "\" & objSid.AccountName
Est-ce que quelqu'un sait le code équivalent qui peut être utilisé en C#?
Merci mdb. Y aurait-il des problèmes lors de l'exécution de ce code sous un compte de privilèges limité? – Carl
Merci encore mdb. Juste testé le code dans un exemple d'application fonctionnant sous un compte de privilèges réduits et divers langages OS. Fonctionne un régal! – Carl
L'utilisation de [le constructeur SecurityIdentifier qui prend une valeur WellKnownSidType comme paramètre] (https://msdn.microsoft.com/en-us/library/214122bs.aspx) est une meilleure option que de passer une chaîne SDDL mystérieuse. Vinicius Ottoni a fourni cette solution ci-dessous. – Daniel