当前位置:  开发笔记 > 编程语言 > 正文

通过SID解析显示用户名的最佳方法是什么?

如何解决《通过SID解析显示用户名的最佳方法是什么?》经验,为你挑选了2个好方法。

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

一个人怎么就解决了显示的用户名(例如DOMAIN\user,BUILT-IN\user)给予在C#中的SID字符串?



1> Dennis C..:

刚刚在pinvoke.net上找到它.

备用托管API:.Net 2.0中提供:

using System.Security.Principal;

// convert the user sid to a domain\name
string account = new SecurityIdentifier(stringSid).Translate(typeof(NTAccount)).ToString();



2> Mitch Wheat..:

Win32 API函数LookupAccountSid()用于查找与SID对应的名称.

LookupAccountSid() 有以下签名:

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

MSDN 参考.

这是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); 

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有