Konvertiert ein Byte Array aus dem AD (z.B. objectSid) in ein SID String.
using System.Runtime.InteropServices;
/// <summary>
/// Konvertiert ein Byte Array in ein SID String.
/// </summary>
/// <param name="sid"></param>
/// <returns></returns>
public string ConvertSid(byte[] sid)
{
string sidString;
IntPtr sidPtr;
IntPtr sidStringPtr = IntPtr.Zero;
int res;
sidPtr = Marshal.AllocHGlobal(sid.Length);
Marshal.Copy(sid, 0, sidPtr, sid.Length);
res = ConvertSidToStringSid(sidPtr, ref sidStringPtr);
if (res == 0)
{
throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
}
sidString = Marshal.PtrToStringAuto(sidStringPtr);
Marshal.FreeHGlobal(sidPtr);
Marshal.FreeHGlobal(sidStringPtr);
return sidString;
}
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int ConvertSidToStringSid(IntPtr pSID, ref IntPtr pSidString);
Kommentare zum Snippet