写个隐藏磁盘的小工具

使用注册表隐藏驱动器的步骤:

1、打开注册表编辑器,定位到注册表项:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

2、在注册表编辑器窗口右侧创建一个DWORD(32位)值,将其命名为:NoDrives

3、计算需要隐藏的盘符对应的数值,计算方法为A盘对应2的0次方,B盘对应2的1次方,C盘对应2的2次方......以此类推,多个盘符则分别计算其对应的数值后加在一起即可

4、将NoDrives的值数据设置为十进制,并填写计算出的数值

5、重启文件资源管理器Explorer.exe即可

一、手工操作

  1. 打开注册表,定位至HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
  2. 在右侧窗口中新建一个类型为DOWRD(32位)的键值,将其命名为NoDrives
  3. 计算需要隐藏的磁盘驱动器的数值,A盘的值为2的0次方,B盘的值为2的1次方,C盘的值为2的2次方,依此类推。若需隐藏多个磁盘驱动器,则将多个磁盘驱动器的值相加
  4. 修改NoDrives键值数据,基数选择十进制,数值数据填写为刚才计算得到的值
  5. 打开任务管理器,重启Explorer.exe(Windows 资源管理器)

二、使用脚本

1、使用脚本操作注册表

  1. 以管理员权限打开命令提示符

  2. 输入以下命令即可替代手工操作中的步骤1、2、4,命令中/d后面的4即对应C盘

batch 复制代码
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDrives /t REG_DWORD /d 4 /f

2、使用脚本计算单个盘符对应的值

复制以下代码到记事本中,并将其另存为"盘符数值计算.cmd"

batch 复制代码
@echo off
setlocal enabledelayedexpansion
set /p drive=请输入一个盘符(仅字母):
set n=0
for %%i 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 (
    set /a bn=1^<^<!n!
    if /i %%i equ !drive! (
        echo %%i = !bn!
    )
    set /a n+=1
)
pause
exit

运行批处理,假如你输入的是D,回车后,你应该得到D=8的输出显示

3、调整代码使其支持多个盘符数值的自动计算

使用以下代码,覆盖之前的cmd文件代码

batch 复制代码
@echo off
setlocal enabledelayedexpansion
set /p drives=请输入需要隐藏的盘符(仅字母),以空格作为分隔:
for %%d in (!drives!) do call :calc %%d
setlocal disabledelayedexpansion
pause
exit

:calc
set n=0
for %%i 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 (
    set /a bn=1^<^<!n!
    if /i %%i equ %1 (
        echo %%i = !bn!
    )
    set /a n+=1
)
goto :eof

运行批处理文件,输入D E F,你将能看到它可以输出每个盘符对应的数值

4、完善代码使其可以自动累加并添加到注册表

完整的批处理代码

batch 复制代码
:: 隐藏磁盘
@echo off
setlocal enabledelayedexpansion
set sn=0
set /p drives=请输入需要隐藏的盘符(仅字母),以空格作为分隔:
for %%d in (!drives!) do call :calc %%d
echo 合计!sn!
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDrives /t REG_DWORD /d !sn! /f
setlocal disabledelayedexpansion
echo.
echo 需要重启Explorer.exe使其生效
pause
exit

:calc
set n=0
for %%i 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 (
    set /a bn=1^<^<!n!
    if /i %%i equ %1 (
        echo %%i = !bn!
        set /a sn+=!bn!
    )
    set /a n+=1
)
goto :eof

最后,如果需要脚本自动重启Explorer.exe可以单独使用以下命令

batch 复制代码
taskkill /f /im "explorer.exe" && start "explorer.exe"

也可以在批处理中的pause命令后面敲击回车,另起一行后粘贴此命令

batch 复制代码
rem 之前的代码不变...
pause
taskkill /f /im "explorer.exe" && start "explorer.exe"
exit
rem 之后的代码不变...

三、最后为了美观,使用C#写了一个GUI工具

1、工具预览

2、下载须知

工具使用.NET 10框架编写,故而电脑中若没有此运行库,可能会提示你下载

点击Download it now下载并安装运行库即可

本工具下载地址:点我下载