问题描述
如果在重启后,在资源管理器中无法找到磁盘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允许的方法,将第一时间更新.
2024/9/1更新:重启或开机后出现终端界面的解决方法
问题:在重启或开机后会有终端界面出现,虽然只是窗口闪现,会自行消失,但影响美观.
解决方法:右键底部任务栏的"开始",打开"开始"右键菜单,找到任务管理器并打开,找到DeleteDiskDrivers.bat,右键该启动项,在右键菜单中将它禁用.
注:这个步骤的作用是在开机时使电脑不弹出终端页面,但不影响Batch脚本删除磁盘驱动的作用.