首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >永久MapNetworkDrive

永久MapNetworkDrive
EN

Stack Overflow用户
提问于 2015-10-19 22:14:58
回答 2查看 4.7K关注 0票数 1

基本上,我有一个VBScript,它收集当前登录用户的用户名,然后将其\\MYSERVER\Users\<username>映射到驱动程序(J:)。我遇到的麻烦是使这个永久化,在重新启动/注销后留在那里。这是我使用的代码:

代码语言:javascript
复制
Option Explicit
Dim objNetwork 
Dim strDriveLetter, strRemotePath, strUserName
strDriveLetter = "J:" 
strRemotePath = "\\MYSERVER\Users" 

Set objNetwork = WScript.CreateObject("WScript.Network") 
strUserName = objNetwork.UserName 
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath _
  & "\" & strUserName

WScript.Echo " Launch Explorer, check: "& strDriveLetter
WScript.Quit
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-20 07:56:58

当有疑问时,请阅读文档

语法 object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword]) 参数 ..。 bUpdateProfile 可选。指示映射信息是否存储在当前用户配置文件中的布尔值。如果提供了bUpdateProfile,且其值为true,则映射存储在用户配置文件中(默认为false)。

所以你需要改变这个:

代码语言:javascript
复制
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath _
  & "\" & strUserName

这方面:

代码语言:javascript
复制
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath _
  & "\" & strUserName, True
票数 0
EN

Stack Overflow用户

发布于 2015-10-20 07:58:53

MapNetworkDrive法:将共享网络驱动器添加到计算机系统中。

代码语言:javascript
复制
object.MapNetworkDrive(sLocalName, sRemoteName, [bUpdateProfile], [sUser], [sPassword])

参数

  • object WshNetwork对象
  • sLocalName字符串值,指示将在本地知道映射驱动器的名称。
  • sRemoteName字符串值,指示共享的UNC名称(\\xxx\yyy)。
  • bUpdateProfile可选。指示映射信息是否存储在当前用户配置文件中的布尔值。如果提供了bUpdateProfile,并且值为true,则映射将存储在用户配置文件中(默认为false)。
  • sUser可选。指示用户名的字符串值。如果要使用当前用户以外的其他人的凭据映射网络驱动器,则必须提供此参数。
  • sPassword可选。指示用户密码的字符串值。如果要使用当前用户以外的其他人的凭据映射网络驱动器,则必须提供此参数。

然而,使用

代码语言:javascript
复制
 objNetwork.MapNetworkDrive strDriveLetter, strRemotePath & "\" & strUserName, True

可能会引发一些错误,例如

  • -2147024811本地设备名称已在使用(&H80070055),或
  • -2147023694本地设备名与另一个网络资源(&H800704B2)有一个可记忆的连接。

注意,下一个检查映射驱动器和有条件删除当前驱动器映射的代码段(如果存在)可能会失败。

代码语言:javascript
复制
On Error GoTo 0
Dim oDrives, i
Set oDrives = objNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
  If oDrives.Item( i) = strDriveLetter Then
    ' remove current drive mapping, force the removal, force persistent
    objNetwork.RemoveNetworkDrive strDriveLetter, True, True
    ' and wait for network drive removal (this could take some time)
    Wscript.Sleep 800
    Exit For
  End If  
Next
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath & "\" & strUserName, True

如果有挂起(仍然记得,但没有被EnumNetworkDrives枚举)驱动器映射暂时断开连接,例如由objNetwork.RemoveNetworkDrive strDriveLetter, True, False

因此,涉及以下一些基本错误处理:

代码语言:javascript
复制
On Error Resume Next
  ' remove current drive mapping, force the removal, force persistent
  objNetwork.RemoveNetworkDrive strDriveLetter, True, True
  ' and wait for network drive removal (this could take some time) 
  Wscript.Sleep 800
  Err.Clear
  ' map network drive, force persistent
  objNetwork.MapNetworkDrive strDriveLetter, strRemotePath & "\" & strUserName, True
On Error GoTo 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33224866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档