internal static NtStatus LsaOpenPolicy(string systemName, LsaPolicyAccessMask desiredAccess, out SafeLsaPolicyHandle policyHandle) { var unicodeName = new UnicodeString(systemName); var attributes = new LsaObjectAttributes(); return(LsaOpenPolicy(ref unicodeName, ref attributes, desiredAccess, out policyHandle)); }
/// <summary> /// Gets an opened SafeLsaHandle on the system specified. Once finished /// with the handle, call the .Dispose() method to clean it up. /// </summary> /// <param name="systemName">The target system to get the open handle, set to null for localhost</param> /// <param name="accessMask">PSPrivilege.LsaPolicyAccessMask with the requests access rights</param> /// <returns>SafeLsaHandle of the opened policy</returns> public static SafeLsaHandle OpenPolicy(string systemName, LsaPolicyAccessMask accessMask) { SafeLsaHandle handle; Helpers.LSA_UNICODE_STRING[] systemNameStr = new Helpers.LSA_UNICODE_STRING[1]; systemNameStr[0] = systemName; Helpers.LSA_OBJECT_ATTRIBUTES objectAttr = new Helpers.LSA_OBJECT_ATTRIBUTES(); UInt32 res = Advapi32.LsaOpenPolicy(systemNameStr, objectAttr, accessMask, out handle); if (res != (UInt32)LsaStatusCodes.STATUS_SUCCESS) { throw new Win32Exception((int)Advapi32.LsaNtStatusToWinError(res), String.Format("LsaOpenPolicy({0}) failed", systemName)); } return(handle); }
public LsaPolicy(string systemName, LsaPolicyAccessMask accessMask) { var status = NativeMethods.LsaOpenPolicy(systemName, accessMask, out this.policyHandle); Validator.AssertSuccess(status); }
public LsaPolicy(LsaPolicyAccessMask accessMask) : this(null, accessMask) { }
public static extern UInt32 LsaOpenPolicy( Helpers.LSA_UNICODE_STRING[] SystemName, Helpers.LSA_OBJECT_ATTRIBUTES ObjectAttributes, LsaPolicyAccessMask AccessMask, out SafeLsaHandle PolicyHandle);
private static extern NtStatus LsaOpenPolicy([In] ref UnicodeString systemName, [In] ref LsaObjectAttributes objectAttributes, LsaPolicyAccessMask desiredAccess, out SafeLsaPolicyHandle policyHandle);