// ReSharper restore InconsistentNaming private static IntPtr GetIdentitySid(string identity) { SecurityIdentifier sid = new NTAccount(identity).Translate(typeof(SecurityIdentifier)) as SecurityIdentifier; if (sid == null) { throw new ArgumentException(string.Format("Account {0} not found.", identity)); } byte[] sidBytes = new byte[sid.BinaryLength]; sid.GetBinaryForm(sidBytes, 0); System.IntPtr sidPtr = Marshal.AllocHGlobal(sidBytes.Length); Marshal.Copy(sidBytes, 0, sidPtr, sidBytes.Length); return(sidPtr); }