第一种:
using System;
using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace ManageCenter
{ public class ConnShareRes { private string userName; private string userPwd; private string shareResDictionary; //构造函数 public ConnShareRes(string myUserName, string myUserPwd, string myShareResDictionary) { this.userName = myUserName; this.userPwd = myUserPwd; this.shareResDictionary = myShareResDictionary; } [StructLayout(LayoutKind.Sequential)] public struct NETRESOURCEA { public int dwScope; public int dwType; public int dwDisplayType; public int dwUsage; [MarshalAs(UnmanagedType.LPStr)] public string lpLocalName; [MarshalAs(UnmanagedType.LPStr)] public string lpRemoteName; [MarshalAs(UnmanagedType.LPStr)] public string lpComment; [MarshalAs(UnmanagedType.LPStr)] public string lpProvider; public override String ToString() { String str = "LocalName: " + lpLocalName + " RemoteName: " + lpRemoteName + " Comment: " + lpComment + " lpProvider: " + lpProvider; return (str); } } [DllImport("mpr.dll")] public static extern int WNetAddConnection2([MarshalAs(UnmanagedType.LPArray)] NETRESOURCEA[] lpNetResource, [MarshalAs(UnmanagedType.LPStr)] string lpPassword, [MarshalAs(UnmanagedType.LPStr)] string UserName, int dwFlags); [DllImport("mpr.dll")] public static extern int WNetCancelConnection2(string lpName, int dwFlags, bool fForce); //开始远程连接 public bool RemoteConnect(bool bConnected) { int res; NETRESOURCEA[] n = new NETRESOURCEA[1]; n[0] = new NETRESOURCEA(); n[0].dwType = 1; int dwFlags = 1; // CONNECT_INTERACTIVE; //n[0].lpLocalName = @"X:"; n[0].lpLocalName = @"";n[0].lpRemoteName = shareResDictionary;
//n[0].lpRemoteName = @""; n[0].lpProvider = null; //Console.WriteLine(n[0]); if (bConnected) { res = WNetAddConnection2(n, userPwd, userName, dwFlags); } else { res=WNetCancelConnection2(shareResDictionary, 1, true); } return (res == 0) ? true : false; } }//class}//namespace
第二种:
using System; using System.Management; class Sample_ConnectionOptions { public static int Main(string[] args) { ConnectionOptions options = new ConnectionOptions(); options.Username = 用户名; //could be in domain\user format options.Password = 密码; ManagementScope scope = new ManagementScope( "\\\\servername\\root\\cimv2", options); try { scope.Connect(); ManagementObject disk = new ManagementObject( scope, new ManagementPath("Win32_logicaldisk='c:'"), null); disk.Get(); } catch (Exception e) { Console.WriteLine("Failed to connect: " + e.Message); } return 0; } }