我从注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList中读取了SID列表。

给定C#中的SID字符串,如何解析显示用户名(例如DOMAIN\userBUILT-IN\user)?

最佳答案

Win32 API函数 LookupAccountSid() 用于查找与SID对应的名称。
LookupAccountSid()具有以下签名:

BOOL LookupAccountSid(LPCTSTR lpSystemName, PSID Sid,LPTSTR Name, LPDWORD cbName,
                       LPTSTR ReferencedDomainName, LPDWORD cbReferencedDomainName,
                       PSID_NAME_USE peUse);

MSDN Ref

这是P/Invoke引用(带有示例代码):http://www.pinvoke.net/default.aspx/advapi32.LookupAccountSid
[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError = true)]
static extern bool LookupAccountSid (
  string lpSystemName,
  [MarshalAs(UnmanagedType.LPArray)] byte[] Sid,
  StringBuilder lpName,
  ref uint cchName,
  StringBuilder ReferencedDomainName,
  ref uint cchReferencedDomainName,
  out SID_NAME_USE peUse);

关于c# - 通过SID解决显示用户名的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/380031/

10-11 22:58