public static extern bool LookupAccountName( StringBuilder lpSystemName, StringBuilder lpAccountName, ref Ntifs._SID Sid, ref uint cbSid, StringBuilder ReferencedDomainName, ref uint cchReferencedDomainName, out Winnt._SID_NAME_USE peUse );
//////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// public static void _ReadSidAndName(IntPtr pointer, out string sid, out string account) { sid = string.Empty; account = string.Empty; IntPtr lpSid = IntPtr.Zero; try { Ntifs._SID structSid = (Ntifs._SID)Marshal.PtrToStructure(pointer, typeof(Ntifs._SID)); bool retVal = advapi32.ConvertSidToStringSid(ref structSid, ref lpSid); if (!retVal || IntPtr.Zero == lpSid) { Misc.GetWin32Error("ConvertSidToStringSid"); return; } sid = Marshal.PtrToStringAuto(lpSid); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { kernel32.LocalFree(lpSid); } try { account = new SecurityIdentifier(sid).Translate(typeof(NTAccount)).ToString(); } catch (IdentityNotMappedException ex) { account = ex.Message; } /* * if (!UserSessions.ConvertSidToName(pointer, out account)) * { * return; * } */ }
public static extern bool ConvertSidToStringSid(ref Ntifs._SID Sid, ref IntPtr StringSid);