映射网络磁盘

建立网络连接,类似net use命令建立的网络磁盘。


  MapNetworkDrive proc host:DWORD
    LOCAL @ret: DWORD
    LOCAL @user[64]: BYTE
    LOCAL @pass[64]: BYTE
    LOCAL @drive[16]: BYTE
    LOCAL @folder[64]: BYTE
    LOCAL @nr: NETRESOURCE
    
         mov    @ret, 0h
         
      ; load the connect parameters.
      INVOKE    LoadString, NULL, IDS_USER, addr @user, 64
      INVOKE    LoadString, NULL, IDS_PASSWORD, addr @pass, 64
      INVOKE    LoadString, NULL, IDS_LOCAL_DRIVE, addr @drive, 16
      INVOKE    LoadString, NULL, IDS_SHARED_FOLDER, addr @folder, 64
  
      ; if the drive has been existed.
      INVOKE    GetDriveType, addr @drive
         ; drive not exist.
         cmp    eax, DRIVE_UNKNOWN
          jz    @F
         cmp    eax, DRIVE_NO_ROOT_DIR
          jz    @F
         cmp    eax, DRIVE_REMOTE
         ; drive is a local fixed disk, can't continue.
         jnz    Return_Exit
         ; drive is a network disk, call API to delete it.
      INVOKE    WNetCancelConnection, addr @drive, 1h
         @@:
         
      INVOKE    RtlZeroMemory, addr @nr, sizeof NETRESOURCE
         mov    @nr.dwType, RESOURCETYPE_DISK
         lea    eax, @drive
         mov    @nr.lpLocalName, eax
      INVOKE    wsprintf, addr szResStringBuffer, SADD("\\%s\%s"), host, addr @folder
         lea    eax, szResStringBuffer
         mov    @nr.lpRemoteName, eax
         mov    @nr.lpProvider, NULL
         
      ; create new shared connect.
      INVOKE    WNetAddConnection2, addr @nr, addr @pass, addr @user, 0h
         cmp    eax, NO_ERROR
         jnz    Return_Exit
         
         mov    @ret, 1h
         
Return_Exit:

      return    @ret
  MapNetworkDrive endp


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值