有没有办法“断开”映射的网络驱动器,但不删除映射?

有没有办法“断开”映射的网络驱动器,但不删除映射?

例如,当我输入时,net use我可能会看到类似这样的内容:

Status        Local       Remote
OK            H:          \\server\home folders\me
Unavailable   I:          \\serverA\share1
Disconnected  J:          \\serverB\share2
Reconnecting  K:          \\serverC\share3

发生这种情况时,Windows 资源管理器在执行一些简单操作(例如在 C: 驱动器上创建新文件夹)时会有 10 - 20 秒的延迟。一段时间后,K: 驱动器将变为“已断开连接”。

我想要做的是以某种方式强制 K:驱动器断开连接或不可用,但不会丢失经过身份验证的映射。

答案1

微软似乎正试图将此类管理任务转移到 PowerShell。

在您的特定情况下,要使用的 cmdlet 是 Remove-PSDrive。 Remove-PSDrive 将完全按照您的要求执行操作:断开映射的网络驱动器。 您的场景的语法将是:

删除-PSDrive -名称 K

要进入可以运行该 cmdlet 的 powershell 命令行,请打开开始菜单,然后在搜索框中输入 powershell。如果没有搜索框,请从开始菜单中选择运行,然后在运行框中输入 powershell 并按回车键。

有关如何使用此 cmdlet 及其所有选项的完整详细信息,请参阅 Microsoft 的 Technet 文章:
http://technet.microsoft.com/en-us/library/hh849760.aspx

答案2

好的。我可能有一个解决方案。我尝试查看的/savecred参数net use,但无法使其正常工作,所以这里是另一种方法:

您的问题是断开 VPN 连接后 Explorer 出现延迟。
那么为什么不呢在资源管理器中隐藏驱动器断开连接后,它就不会尝试访问它们。

有一个注册表项可以从资源管理器中隐藏驱动器:

HKEY_xxx\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives

和 HKEY_xxx 都可以是HKEY_LOCAL_MACHINEHKEY_CURRENT_USER

NoDrives在这篇文章下面,对应保留什么值有一个总结。
(添加驱动器的数字)。


我创建了一个小型批处理文件,您无需自己进行计算。
它是一个“切换”批处理文件。

运行一次即可连接到您的“我的 VPN”。
再次运行即可断开连接并隐藏驱动器 I、J 和 K

您可以轻松地将其拆分为两个批处理文件,但您明白了...如果您设置NoDrives自己的数量而不是让批处理进行计算,您也可以简化该批处理文件。

这需要以管理员身份运行。(可以自动提升,但这非常高级)

如果你授予自己密钥的权限,NoDrives必须以管理员身份运行。只需打开regedit.exe,浏览到此密钥并单击“编辑 > 权限”,然后授予自己对此密钥的“完全控制”权限。

@echo off
:: ------------------------
set MyVPN="My VPN"
:: ------------------------
rasdial | findstr %MyVPN% 1>nul
If %ERRORLEVEL% == 0 goto disconnect

:connect
echo ============================================================
echo connecting to %MyVPN%
echo ============================================================
rasdial %MyVPN%
:: This is easy. We just set 0 in NoDrives
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDrives /T REG_DWORD /d 0 /f

goto :end

:disconnect
echo ============================================================
echo disconnecting from %MyVPN%
echo ============================================================
rasdial %MyVPN% /disconnect

:: ------------------------------------------------------------------
:: This is harder. We need to determine what value NoDrives should be
:: ------------------------------------------------------------------
Setlocal EnableDelayedExpansion

:: ------------------------
:: Set here your VPN drives
:: ------------------------
set drives='I J K'

:: ------------------------
:: Calculation to determine the value
:: ------------------------
set drive_value=1
set NoDrives=0
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  echo.%drives% | findstr "%%c" 1>nul
  if !ERRORLEVEL! == 0 set /a NoDrives+=drive_value
  set /a drive_value="drive_value<<1"
)
echo Seting NoDrives to %NoDrives%
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDrives /T REG_DWORD /d %NoDrives% /f
endlocal

:end
pause

注意:
需要关闭 Windows 资源管理器并再次打开才能隐藏(或再次显示)驱动器。


设置NoDrives

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives

     Decimal       Hex
A:         1         1
B:         2         2
C:         4         4
D:         8         8
E:        16        10
F:        32        20
G:        64        40
H:       128        80
I:       256       100
J:       512       200
K:      1024       400
L:      2048       800
M:      4096      1000
N:      8192      2000
O:     16384      4000
P:     32768      8000
Q:     65536     10000
R:    131072     20000
S:    262144     40000
T:    524288     80000
U:   1048576    100000
V:   2097152    200000
W:   4194304    400000
X:   8388608    800000
Y:  16777216   1000000 
Z:  33554432   2000000 

答案3

我不知道如何做到这一点,但可以编写一个脚本来添加映射驱动器以使生活变得轻松。

  1. 创建一个扩展名为 .bat 的文件(例如 map_drives.bat)
  2. 在文件中添加如下行net use J: \\server\folder
  3. 双击该文件,它将映射您的驱动器

相关内容