好。我可能有一个解决方案。我试着查看/savecred
参数,net use
但无法让它正常工作,所以这是另一种方法:
麻烦在于与VPN断开后Explorer的延迟。
那么为什么不在断开连接后从资源管理器中隐藏驱动器,这样它就不会尝试访问它们。
有一个注册表项可以从资源管理器中隐藏驱动器:
HKEY_xxx\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives
和HKEY_xxx都可以HKEY_LOCAL_MACHINE
和HKEY_CURRENT_USER
。
在这篇文章下面有一个关于NoDrives
应该保持什么价值的摘要。
(添加驱动器的编号)。
我创建了一个小型批处理文件,您无需自己进行计算。
这是一个'toggle' - 批处理文件。
运行一次以连接到“我的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