Ok. Potrei avere una soluzione. Ho provato a esaminare il /savecred
parametro di net use
ma non sono riuscito a farlo funzionare correttamente, quindi ecco un altro approccio:
Il tuo problema è stato il ritardo con Explorer dopo la disconnessione con la VPN.
Quindi perché non nascondere le unità da Explorer dopo la disconnessione in modo che non provi ad accedervi.
Esiste una chiave di registro per nascondere le unità da Explorer:
HKEY_xxx\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives
e HKEY_xxx possono essere sia HKEY_LOCAL_MACHINE
e HKEY_CURRENT_USER
.
Sotto questo post c'è un riepilogo su quale valore NoDrives
dovrebbe contenere.
(aggiungi i numeri per le unità).
Ho creato un piccolo file batch in cui non è necessario eseguire i calcoli da soli.
È un file batch 'toggle'.
Eseguilo una volta per connetterti a "La mia VPN".
Eseguire di nuovo per staccare e nascondere le unità I, J e K .
Puoi dividerlo facilmente in due file batch ma ottieni il punto ... Puoi anche semplificare questo file batch se imposti il numero di NoDrives
te stesso invece di lasciare che il batch faccia il calcolo.
Questo deve essere eseguito come amministratore. (è possibile elevare automaticamente ma è molto avanzato)
Se ti concedi l'autorizzazione per la chiave, NoDrives
non devi eseguirla come amministratore. Basta aprire regedit.exe
, selezionare questa chiave e fare clic su "Modifica> Autorizzazioni" e concedere "Controllo completo" su questa chiave.
@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
Nota:
Windows Explorer deve essere chiuso e riaperto prima che le unità siano nascoste (o nuovamente visibili).
Impostazioni per 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