问题描述
如果在重启后,在资源管理器中无法找到磁盘D,磁盘E,磁盘F(为方便描述,以下仅称D盘),也无法像网上大部分教程一样在磁盘管理中找到D盘分配盘符,因为仅显示磁盘0,根本找不到磁盘1(或磁盘X)的D盘.
而且,如果在重启前删除设备管理器中的磁盘驱动器,则在重启后无异常,可以查看到D盘.
问题分析
重启前删除磁盘驱动器可以解决此问题,但我们不可能每次都在重启前打开设备管理器删除磁盘驱动器,于是,我们可以写一个bat脚本,使我们在关机时自动删除磁盘驱动器,并在注册表中运用.
解决步骤
- 新建一个文本文档,写入以下内容:
@echo off
SET driverID=IDE\CdRom&VEN_*&PROD_*
:: 检查是否以管理员权限运行
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
:: 如果没有管理员权限,请求提升权限
if '%errorlevel%' NEQ '0' (
echo 请求管理员权限...
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
)
:: 删除驱动程序
echo 正在删除磁盘驱动器驱动...
pnputil /delete-driver %GenDisk% /forcedelete
:: 可以选择立即重启或等待用户操作
:: shutdown /r /t 0
-
另存为DeleteDiskDrivers.bat,并保存到C:\Scripts\DeleteDiskDrivers.bat(建议保存到C盘,以免权限不够).
-
键入win+R,输入regedit,打开注册表.
-
在注册表中定位到
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
. -
右键Run,选择新建,选择字符串值,命名为DeleteDriversOnShutdown,修改值为C:\Scripts\DeleteDiskDrivers.bat.
-
关闭注册表,开始测试.重启后发现UAC(用户账户控制)弹窗,需要点击,浪费时间.
-
打开控制面板,选择系统和安全,找到更改用户账户控制设置,将设置调为最低(从不通知),重新测试.
-
重启后发现D盘可查看,一切正常,再也不用重启前删除磁盘驱动器了.
-
成功!!!
反思与进步
如果系统出现故障,我们可以在注册表中自行设置与修改,以达到修复的目的.
另外,如果有小伙伴喜欢UAC弹窗,可以选择放弃此方法或在重启时点击一次允许,后续如果发现不需要UAC允许的方法,将第一时间更新.