public object MarshalNativeToManaged(System.IntPtr pNativeData) { if (pNativeData != IntPtr.Zero) { LSA_UNICODE_STRING lus = (LSA_UNICODE_STRING)Marshal.PtrToStructure(pNativeData, typeof(LSA_UNICODE_STRING)); return(lus.ToString()); } return(null); }
public System.IntPtr MarshalManagedToNative(object ManagedObj) { IntPtr memory = Marshal.AllocHGlobal(nativeSize); _myAllocated[memory] = memory; //Console.WriteLine("MarshalManagedToNative"); var lus = new LSA_UNICODE_STRING(); lus.Set(((string)ManagedObj)); Marshal.StructureToPtr(lus, memory, true); return(memory); }
public IEnumerable <string> EnumerateAllowLogonLocalSids() { // You should already have the HPolicy and SID ready IntPtr rightsPtr; int countOfRights; var right = new LSA_UNICODE_STRING(); right.Set(_seInteractiveLogonRight); LsaEnumerateAccountsWithUserRight(_policy, new[] { right }, out rightsPtr, out countOfRights); try { for (Int32 i = 0; i < countOfRights; i++) { var structure = rightsPtr.ElementAt <LSA_ENUMERATION_INFORMATION>(i); /* * var name = new StringBuilder(); * uint cchName = 0; * uint cchName2 = 0; * var domainName = new StringBuilder(); * SID_NAME_USE use; * * LookupAccountSid(null, structure.Sid, name, ref cchName, domainName, ref cchName2, out use); */ var str = ConvertSidToStringSid(structure.Sid); // var bytes = ConvertStringSidToSid(str); yield return(str); } } finally { LsaFreeMemory(rightsPtr); } }
void LsaRemoveAccountRights(IntPtr AccountSid, LSA_UNICODE_STRING UserRight) { LsaRemoveAccountRights(_policy, AccountSid, false, new[] { UserRight }, 1); }
void LsaAddAccountRights(IntPtr AccountSid, LSA_UNICODE_STRING UserRight) { LsaAddAccountRights(_policy, AccountSid, new[] { UserRight }, 1); }
public void Set(string str) { this = new LSA_UNICODE_STRING(str); }