Dobrze. Mogę mieć rozwiązanie. Próbowałem przyjrzeć się /savecred
parametrowi, net use
ale nie mogłem go poprawnie uruchomić, więc oto inne podejście:
Problem polegał na opóźnieniu w Eksploratorze po rozłączeniu z VPN.
Dlaczego więc nie ukryć dysków w Eksploratorze po odłączeniu, aby nie próbował uzyskać do nich dostępu.
Istnieje klucz rejestru do ukrycia dysków w Eksploratorze:
HKEY_xxx\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives
a HKEY_xxx może być jednocześnie HKEY_LOCAL_MACHINE
i HKEY_CURRENT_USER
.
Pod tym postem znajduje się streszczenie tego, jaką wartość NoDrives
powinna utrzymać.
(dodaj liczby dysków).
Stworzyłem mały plik wsadowy, w którym nie musisz samodzielnie wykonywać obliczeń.
Jest to plik wsadowy „przełączający”.
Uruchom raz, aby połączyć się z „My VPN”.
Uruchomić go ponownie, aby odłączyć i ukryć dyski I, J i K .
Możesz łatwo podzielić to na dwa pliki wsadowe, ale masz rację ... Możesz także uprościć ten plik wsadowy, jeśli ustawisz liczbę NoDrives
siebie zamiast pozwolić partii wykonać obliczenia.
To musi być uruchomione jako administrator. (możliwe jest automatyczne podniesienie, ale jest to bardzo zaawansowane)
Jeśli przyznasz sobie klucz NoDrives
, nie musisz uruchamiać tego jako administrator. Po prostu otwórz regedit.exe
, przejdź do tego klucza i kliknij „Edytuj> Uprawnienia” i daj sobie „Pełna kontrolę” nad tym kluczem.
@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
Uwaga:
Eksplorator Windows musi zostać zamknięty i ponownie otwarty, zanim dyski zostaną ukryte (lub ponownie widoczne).
Ustawienia dla 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