public AdsiClient(string server = null, NetworkCredential credential = null) { DirectoryContext context; if (!String.IsNullOrEmpty(server)) { if (credential != null) { context = new DirectoryContext(DirectoryContextType.DirectoryServer, server, credential.GetLogonName(), credential.Password); } else { context = new DirectoryContext(DirectoryContextType.DirectoryServer, server); } using (var dc = DomainController.GetDomainController(context)) { using (var domain = dc.Domain) { this.searchRoot = domain.GetDirectoryEntry(); this.NetBIOSDomainName = GetNetBIOSDomainName(domain, server); } } } else { // Discover the server for the current domain if (credential != null) { context = new DirectoryContext(DirectoryContextType.Domain, credential.GetLogonName(), credential.Password); } else { context = new DirectoryContext(DirectoryContextType.Domain); } using (var domain = Domain.GetDomain(context)) { this.searchRoot = domain.GetDirectoryEntry(); this.NetBIOSDomainName = GetNetBIOSDomainName(domain, server); } } }
public NamedPipeConnection(string server, NetworkCredential credential) { // Argument validation: Validator.AssertNotNullOrWhiteSpace(server, "server"); Validator.AssertNotNull(credential, "credential"); this.Server = server; // Disconnect from the IPC share first in case of a preexisting connection. Ignore any errors. this.DoDisconnect(); // Connect NetResource resource = new NetResource(this.ShareName); Win32ErrorCode result = NativeMethods.WNetAddConnection2(ref resource, credential.SecurePassword, credential.GetLogonName(), NetConnectOptions.Temporary); Validator.AssertSuccess(result); }