例如,当我输入时,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_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
答案3
我不知道如何做到这一点,但可以编写一个脚本来添加映射驱动器以使生活变得轻松。
- 创建一个扩展名为 .bat 的文件(例如 map_drives.bat)
- 在文件中添加如下行
net use J: \\server\folder
- 双击该文件,它将映射您的驱动器