Exemple #1
0
        private void Connect(string serverName, SamServerAccessMask accessMask, NetworkCredential credential = null)
        {
            Validator.AssertNotNullOrWhiteSpace(serverName, "serverName");
            this.Name = serverName;

            SafeSamHandle serverHandle;
            NtStatus connectResult;
            if(credential != null )
            {
                // Connect named pipe
                // TODO: Use SamConnectWithCreds instead
                this.IPCConnection = new NamedPipeConnection(serverName, credential);
            }
            connectResult = NativeMethods.SamConnect(this.Name, out serverHandle, accessMask);
            Validator.AssertSuccess(connectResult);
            this.Handle = serverHandle;
        }
Exemple #2
0
        private void Connect(string serverName, SamServerAccessMask accessMask, NetworkCredential credential = null)
        {
            Validator.AssertNotNullOrWhiteSpace(serverName, "serverName");
            this.Name = serverName;

            SafeSamHandle serverHandle;
            NtStatus      connectResult;

            if (credential != null)
            {
                // Connect named pipe
                // TODO: Use SamConnectWithCreds instead
                this.IPCConnection = new NamedPipeConnection(serverName, credential);
            }
            connectResult = NativeMethods.SamConnect(this.Name, out serverHandle, accessMask);
            Validator.AssertSuccess(connectResult);
            this.Handle = serverHandle;
        }
Exemple #3
0
        internal static NtStatus SamConnectWithCreds(string serverName, out SafeSamHandle serverHandle, SamServerAccessMask accessMask, SafeRpcAuthIdentityHandle authIdentity)
        {
            uint          unknown              = 0;
            IntPtr        objectAttributes     = IntPtr.Zero;
            UnicodeString unicodeServerName    = new UnicodeString(serverName);
            string        servicePrincipalName = spnPrefix + serverName;
            NtStatus      result = SamConnectWithCreds(ref unicodeServerName, out serverHandle, accessMask, objectAttributes, authIdentity, servicePrincipalName, out unknown);

            if (result == NtStatus.RpcUnknownAuthenticationService)
            {
                // Try it again, but without the SPN
                servicePrincipalName = null;
                return(SamConnectWithCreds(ref unicodeServerName, out serverHandle, accessMask, objectAttributes, authIdentity, servicePrincipalName, out unknown));
            }
            else
            {
                return(result);
            }
        }
Exemple #4
0
 private static extern NtStatus SamConnectWithCreds([In] ref UnicodeString serverName, out SafeSamHandle serverHandle, SamServerAccessMask accessMask, IntPtr objectAttributes, SafeRpcAuthIdentityHandle authIdentity, [MarshalAs(UnmanagedType.LPWStr)] string servicePrincipalName, out uint unknown);
Exemple #5
0
        internal static NtStatus SamConnect(string serverName, out SafeSamHandle serverHandle, SamServerAccessMask accessMask)
        {
            IntPtr        objectAttributes  = IntPtr.Zero;
            UnicodeString unicodeServerName = new UnicodeString(serverName);

            return(SamConnect(ref unicodeServerName, out serverHandle, accessMask, objectAttributes));
        }
Exemple #6
0
 private static extern NtStatus SamConnect([In] ref UnicodeString serverName, out SafeSamHandle serverHandle, SamServerAccessMask accessMask, IntPtr objectAttributes);
Exemple #7
0
 public SamServer(string serverName, SamServerAccessMask accessMask) : base(null)
 {
     this.Connect(serverName, accessMask);
 }
Exemple #8
0
 public SamServer(string serverName, NetworkCredential credential, SamServerAccessMask accessMask) : base(null)
 {
     this.Connect(serverName, accessMask, credential);
 }
Exemple #9
0
 public SamServer(string serverName, SamServerAccessMask accessMask) : base(null)
 {
     this.Connect(serverName, accessMask);
 }
Exemple #10
0
 public SamServer(string serverName, NetworkCredential credential, SamServerAccessMask accessMask) : base(null)
 {
     this.Connect(serverName, accessMask, credential);
 }