zoukankan      html  css  js  c++  java
  • 如何把网络共享目录映射为本地驱动器

    要映射一个网络目录为本地驱动器,需要调用系统DLLWNetAddConnection2函数来进行添加。

     

    首先,系统函数的申明如下:

    using System.Runtime.InteropServices;

     

        [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);

     

        [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;

        }

        添加映射网络驱动器调用的代码如下:

        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 = yourNetworkPath;       

        myNetResource.Provider = null;       

     

        uint nret = WNetAddConnection2( myNetResource, pwd, username, 0);

        注意:如果正确,返回值是0;否则错误。

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

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

     

     

     

    首先,要在工程中引用Windows.Management

     

    然后,就是用WMI进行查询,代码如下:

        public enum DRIVE_TYPE:int

        {

            REMOVABLE       = 2,

            LOCALDISK       = 3,

            NETDRIVE            = 4,

            CDROM           = 5,

        }

     

        public ArrayList GetAllNetDriveName()

        {

            //get drive collection

            string strQuery = string.Format( "SELECT * From Win32_LogicalDisk WHERE DriveType = {0}", (int)( DRIVE_TYPE.NETDRIVE) );

     

            ManagementObjectSearcher query = new ManagementObjectSearcher(strQuery);

            ManagementObjectCollection queryCollection = query.Get();

     

            ArrayList arrNetDriveName = new ArrayList();

            foreach ( ManagementObject mo in queryCollection)

                arrNetDriveName.Add( mo["Name"].ToString() );

            return arrNetDriveName;

        }

     

           网络驱动器的盘符已经获得,那么删除,就可以调用原来的方法,参见:

  • 相关阅读:
    向Oracle 数据表中插入一条带有日期类型的数据
    JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库
    球球大作战四亿人都在玩?玩家回归没有优越感,新玩家游戏被虐,游戏体验感极差!
    struts2中的错误--java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
    如何在idea中设置 jsp 内容修改以后,立即生效而不用重新启动服务?
    idea中 在接口中如何直接跳转到该接口的是实现类中?
    使用IDEA 创建Servlet 的时候,找不到javax.servlet
    如何高效的遍历HashMap 以及对key 进行排序
    springboot 自动装配
    git 多账户添加ssh秘钥
  • 原文地址:https://www.cnblogs.com/kenter/p/2122971.html
Copyright © 2011-2022 走看看