可能是重复问题:
如何判断我的进程是否以管理员身份运行?
使用C#如何检查我的进程是否以本地管理员身份运行?
我知道如何找出当前用户是否是内置管理员组的成员。但这不是我想知道的。我想知道的是当前用户是否为(唯一的)特殊本地管理员帐户。
我也知道如何检索当前用户的名称,但我不想将其与硬编码的名称“Administrator”进行比较,因为这在本地化版本的Windows中不起作用(例如西班牙语中的“Administrador”,法语中的“Administrateur”等)。
可能是重复问题:
如何判断我的进程是否以管理员身份运行?
使用C#如何检查我的进程是否以本地管理员身份运行?
我知道如何找出当前用户是否是内置管理员组的成员。但这不是我想知道的。我想知道的是当前用户是否为(唯一的)特殊本地管理员帐户。
我也知道如何检索当前用户的名称,但我不想将其与硬编码的名称“Administrator”进行比较,因为这在本地化版本的Windows中不起作用(例如西班牙语中的“Administrador”,法语中的“Administrateur”等)。
这是我使用的方式
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
var securityIdentifier = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null); var ntAccount = securityIdentifier.Translate(typeof(NTAccount)); var name = ntAccount.Value;
但是这会返回“Administrators”(复数形式),而不是“Administrator”(单数形式)。WellKnownSidType.BuiltinAdministratorsSid 返回的 SID 到底是什么?是 Administrators 组的还是本地 Administrator 的? - candritzky