C#映射网络驱动器

[StructLayout(LayoutKind.Sequential)] public class NETRESOURCE { public int dwScope; public int dwType; public int dwDisplayType; public int dwUsage; public string LocalName; public string RemoteName; public string Comment; public string Provider; } [DllImport("mpr.dll", EntryPoint = "WNetAddConnection2")] public static extern uint WNetAddConnection2( [In] NETRESOURCE lpNetResource, string lpPassword, string lpUsername, uint dwFlags); [DllImport("Mpr.dll")] public static extern uint WNetCancelConnection2( string lpName, uint dwFlags, bool fForce);

调用例子

            NETRESOURCE myNetResource = new NETRESOURCE();

            myNetResource.dwScope = 2;       //2:RESOURCE_GLOBALNET           

            myNetResource.dwType = 1;       //1:RESOURCETYPE_ANY            

            myNetResource.dwDisplayType = 3; //3:RESOURCEDISPLAYTYPE_GENERIC          

            myNetResource.dwUsage = 1;       //1: RESOURCEUSAGE_CONNECTABLE    

            myNetResource.LocalName = "T:";

            myNetResource.RemoteName = @"//10.72.27.22/test";

            myNetResource.Provider = null;

            uint nret = WNetAddConnection2(myNetResource, "tt", "tt", 0);

 

    删除映射网络驱动器调用的代码如下:

    uint nret = WNetCancelConnection2( yourNetDriveName, 1, true);

 

 

其中关键技术是调用了两个Windows API函数WNetAddConnection2和WNetCancelConnection2,下面分别加以介绍:

1、WNetAddConnection2

其作用是创建一个同网络资源的连接,当调用成功时函数返回0。其参数说明如下:

lpNetResource:数据类型是结构NETRESOURCE,该结构中的各个字段对要连接的网络资源进行了定义,包括远程计算机共享文件夹的名字(如图2所示,在“远程共享文件夹”文本框中的“//1.1.1.1/share”),以及本地系统为网络驱动器分配的盘符“X:”,等等;

lpPassword:数据类型为string,该参数是个可选参数,用来设置网络密码,对应本程序控件Text3中的文本。如果该参数的值等于vbNullString,则表示采用系统当前登录用户的默认密码;如果是一个空字符串,则表示不需要任何密码就可访问网络资源;

lpUserName:数据类型为string,指定用于网络连接的用户名,对应本程序控件Text2中的文本。如果该参数的值等于vbNullString,则表示使用系统当前的登录用户名;

dwFlags:数据类型为long,该参数可以设为0,也可以指定常量CONNECT_UPDATE_PROFILE(表示创建永久性的网络连接)。

 

2、WNetCancelConnection2

其作用是断开一个网络连接,当调用成功时函数返回0。其参数说明如下:

lpName:数据类型是string,用来指定已连接资源的远程名称或本地名称,具体在本文中就是给远程共享文件夹分配的盘符:“X:”;

dwFlags:数据类型为long,可以取两个值,0或CONNECT_UPDATE_PROFILE,如果为0,而且建立的网络连接是永久性连接,则在Windows下次重新启动时仍会重新连接;

fForce:数据类型为long,如果为True,那么,即使连接的网络资源上有正在打开的文件或作业,也强制断开网络连接,这样就会造成数据的丢失、不完整性,建议将该参数的值设为False,如程序中所做。

 

 

 

==========================================

 补充: 通过C#程序访问局域网中共享文件夹。

 

 

private void button1_Click(object sender, System.EventArgs e) { ConnectionOptions co = new ConnectionOptions(); co.Username = "Administrator"; co.Password = "xxxxxxxxxxxxxxxxxxxx"; System.Management.ManagementScope ms = new System.Management.ManagementScope("////218.241.42.116//root//cimv2", co); } private void button2_Click(object sender, System.EventArgs e) { Process.Start("////litao-mclpal8fv//temp//text.txt"); //Process.Start("d://temp//text.txt"); }

 

你可能感兴趣的:(windows,String,网络,object,C#,button)