Хорошо. У меня может быть решение. Я попытался посмотреть на параметр /savecred
параметра net use
но не смог заставить его работать должным образом, поэтому есть другой подход:
Ваша проблема была задержка с Explorer после отключения с VPN.
Так почему бы не скрыть диски от Проводника после отключения, чтобы он не пытался получить к ним доступ.
Есть раздел реестра, чтобы скрыть диски от Explorer:
HKEY_xxx\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives
и HKEY_xxx могут быть HKEY_LOCAL_MACHINE
и HKEY_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