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));
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        public LsaPolicy(string systemName, LsaPolicyAccessMask accessMask)
        {
            var status = NativeMethods.LsaOpenPolicy(systemName, accessMask, out this.policyHandle);

            Validator.AssertSuccess(status);
        }
Beispiel #4
0
 public LsaPolicy(LsaPolicyAccessMask accessMask) : this(null, accessMask)
 {
 }
Beispiel #5
0
 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);