本文介绍了通过SID来解决显示的用户名的最好方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从注册表,HKEY_LOCAL_MACHINE \\ SOFTWARE \\微软\\的Windows NT \\ CURRENTVERSION \\ ProfileList文件读取SID的列表。

I read a list of SID from the registry, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.

如何解决显示的用户名(如域\\用户的buildin \\用户)通过在C#中一个给定的SID字符串?

How to resolve the display username (e.g. DOMAIN\user, BUILDIN\user) by a given SID string in C#?

推荐答案

Win32 API函数的是用来查找对应于一个SID名。

The Win32 API function LookupAccountSid() is used to find the name that corresponds to a SID.

执行LookupAccountSid()具有以下签名:

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

这里的的P / Invoke参考(样本code):

Here's the P/Invoke reference (with sample code): 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);

这篇关于通过SID来解决显示的用户名的最好方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 17:49