无忧启动论坛

标题: 脱离WScript添加右键显示隐藏文件扩展名,附cmd和pecmd代码 [打印本页]

作者: wjgyz740526    时间: 2023-7-26 09:18
标题: 脱离WScript添加右键显示隐藏文件扩展名,附cmd和pecmd代码
本帖最后由 wjgyz740526 于 2023-7-28 17:08 编辑

如题,准备在win11PE上添加右键显示隐藏系统文件,发现不是简单地复制文件添加注册表就有用,这个需要WScript支持,要有WScript.exe才行,很多pe是精简掉这个功能的,又试了下右键管理软件,发现有的软件能够生效,查看注册表,它的右键类似这样:"%ProgramFiles%\Easy Context Menu\EcMenu.exe" /HideFileExt
这个有点不爽,我只要有个右键,难不成还要单独弄个软件?

折腾了下,弄了个cmd版本的(非常感谢Bluebells提供的刷新代码,否则无法实现),另外,Bluebells在25楼有PECMD 版本的,看各位喜好吧
  1. @echo off

  2. for /f "tokens=1,2,* " %%i in ('reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt') do if %%k==0x1 (set x=0&set y=显示)else set x=1&set y=隐藏

  3. reg add "HKCR\Directory\Background\shell\InitPropertyBag" /v MUIVerb /t REG_SZ /d "%y%系统文件和扩展名" /f>nul
  4. reg add "HKCR\Directory\Background\shell\InitPropertyBag\Command" /t REG_SZ /d "PECMD.EXE EXEC -hide %%windir%%\system32\superhidden.cmd" /f>nul

  5. echo @echo off >%windir%\system32\superhidden.cmd
  6. echo setlocal EnableDelayedExpansion >>%windir%\system32\superhidden.cmd
  7. echo for /f "tokens=1,2,* " %%%%i in (^'reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt^') do if %%%%k equ 1 (set x=0^&set y=隐藏)else set x=1^&set y=显示 >>%windir%\system32\superhidden.cmd
  8. echo if %%x%% equ 0 ( >>%windir%\system32\superhidden.cmd
  9. echo reg add "HKLM\SOFTWARE\Classes\Directory\background\shell\InitPropertyBag" /v "MUIVerb" /d "显示系统文件和扩展名" /f >>%windir%\system32\superhidden.cmd
  10. echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "hidden" /t REG_DWORD /d 0 /f >>%windir%\system32\superhidden.cmd
  11. echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f >>%windir%\system32\superhidden.cmd
  12. echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowSuperHidden" /t REG_DWORD /d 1 /f >>%windir%\system32\superhidden.cmd
  13. echo start PECMD.EXE ENVI @@POSTMSG=65535;273;41504;Null >>%windir%\system32\superhidden.cmd
  14. echo ) else ( >>%windir%\system32\superhidden.cmd
  15. echo reg add "HKLM\SOFTWARE\Classes\Directory\background\shell\InitPropertyBag" /v "MUIVerb" /t REG_DWORD /d "隐藏系统文件和扩展名" /f >>%windir%\system32\superhidden.cmd
  16. echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "hidden" /t REG_DWORD /d 1 /f >>%windir%\system32\superhidden.cmd
  17. echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 1 /f >>%windir%\system32\superhidden.cmd
  18. echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowSuperHidden" /t REG_DWORD /d 0 /f >>%windir%\system32\superhidden.cmd
  19. echo start PECMD.EXE ENVI @@POSTMSG=65535;273;41504;Null >>%windir%\system32\superhidden.cmd
  20. echo ) >>%windir%\system32\superhidden.cmd
  21. echo exit >>%windir%\system32\superhidden.cmd

  22. pause&exit
复制代码
把这个脚本保存在pe的windows目录,pecmd.ini加一句:exec -hide x:\windows\显示隐藏.cmd
如果右键菜单不变化,删掉
echo reg add "HKLM\SOFTWARE\Classes\Directory\background\shell\InitPropertyBag" /v "MUIVerb" /d "显示系统文件和扩展名" /f >>%windir%\system32\superhidden.cmd
echo reg add "HKLM\SOFTWARE\Classes\Directory\background\shell\InitPropertyBag" /v "MUIVerb" /t REG_DWORD /d "隐藏系统文件和扩展名" /f >>%windir%\system32\superhidden.cmd
这两句——注册表权限问题导致不能实时修改

作者: tzxinqing    时间: 2023-7-26 09:35
补上WScript.exe不就好了?
作者: wjgyz740526    时间: 2023-7-26 09:42
我怕还要WScript.exe的支持文件和注册表,那就臃肿了
作者: wjgyz740526    时间: 2023-7-26 10:29
2011wyy 发表于 2023-7-26 09:53
很多 PE 默认是显示隐藏的系统文件,楼主为何还要再要右键菜单呢?

我这个没有啊,要不怎么多这个事
作者: Bluebells    时间: 2023-7-26 11:28
本帖最后由 Bluebells 于 2023-7-26 18:11 编辑

这不是注册表数据就可以完成的事?
  1. @echo off
  2. reg add "HKLM\SOFTWARE\Classes\DesktopBackground\Shell\HideSuperHidden" /v "MUIVerb" /d "隐藏系统文件" /f
  3. reg add "HKLM\SOFTWARE\Classes\DesktopBackground\Shell\HideSuperHidden\command" /ve /d "PECMD.EXE TEAM REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\\ShowSuperHidden=0x00000000 | ENVI @@POSTMSG=65535;273;41504;Null" /f
  4. reg add "HKLM\SOFTWARE\Classes\DesktopBackground\Shell\ShowSuperHidden" /v "MUIVerb" /d "显示系统文件" /f
  5. reg add "HKLM\SOFTWARE\Classes\DesktopBackground\Shell\ShowSuperHidden\command" /ve /d "PECMD.EXE TEAM REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\\ShowSuperHidden=0x00000001 | ENVI @@POSTMSG=65535;273;41504;Null" /f
复制代码


作者: cxdsefdre    时间: 2023-7-26 13:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: wjgyz740526    时间: 2023-7-26 13:13
Bluebells 发表于 2023-7-26 11:28
这不是注册表数据就可以完成的事?

卧槽,没想到pecmd

谢谢
作者: yc2428    时间: 2023-7-26 14:25
学习了
作者: wjgyz740526    时间: 2023-7-26 16:34
Bluebells 发表于 2023-7-26 11:28
这不是注册表数据就可以完成的事?

看了下, 还要修改, 不能自动刷新,还要加上显示隐藏后缀名

谢谢你的思路
作者: Bluebells    时间: 2023-7-26 16:50
wjgyz740526 发表于 2023-7-26 16:34
看了下, 还要修改, 不能自动刷新,还要加上显示隐藏后缀名

谢谢你的思路

改进了一下刷新问题, 你自己测试一下(改进的代码还在原来楼层)
关于"隐藏已知文件类型的扩展名", 其注册表位置为:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"HideFileExt"=dword:00000001
PS: 键值为 0 则不隐藏, 非 0 则隐藏
作者: wjgyz740526    时间: 2023-7-26 17:03
谢谢,正在折腾
作者: wjgyz740526    时间: 2023-7-26 17:06
Bluebells 发表于 2023-7-26 16:50
改进了一下刷新问题, 你自己测试一下(改进的代码还在原来楼层)
关于"隐藏已知文件类型的扩展名", 其注册 ...

我现在想,既然pecmd可以实现,那就写到批处理调用,这样右键菜单可以合并到一个,调用批处理就可以了
作者: wjgyz740526    时间: 2023-7-26 17:14
Bluebells 发表于 2023-7-26 16:50
改进了一下刷新问题, 你自己测试一下(改进的代码还在原来楼层)
关于"隐藏已知文件类型的扩展名", 其注册 ...

还是无法自动刷新
作者: Bluebells    时间: 2023-7-26 17:18
wjgyz740526 发表于 2023-7-26 17:14
还是无法自动刷新

这种刷新不能刷新当前打开的窗口的页面,切换一下就可以看到效果。如果你不介意重启 Explorer,那就直接 kill explorer.exe
作者: wjgyz740526    时间: 2023-7-26 17:31
2011wyy 发表于 2023-7-26 17:23
支持折腾

刷新是个头疼的事情

这样太麻烦了
作者: wjgyz740526    时间: 2023-7-26 17:33
Bluebells 发表于 2023-7-26 17:18
这种刷新不能刷新当前打开的窗口的页面,切换一下就可以看到效果。如果你不介意重启 Explorer,那就直接  ...

如果能用pecmd获取到当前打开的文件夹路径就好办了,现kill掉explorer进程,然后打开这个路径
作者: Bluebells    时间: 2023-7-26 18:12
wjgyz740526 发表于 2023-7-26 17:33
如果能用pecmd获取到当前打开的文件夹路径就好办了,现kill掉explorer进程,然后打开这个路径

又改进了一下代码, 再试试看
作者: wjgyz740526    时间: 2023-7-26 18:15
Bluebells 发表于 2023-7-26 18:12
又改进了一下代码, 再试试看

看到有刷新的动作了,但是估计注册表部分有问题,该隐藏的没隐藏,该显示的没显示


作者: Bluebells    时间: 2023-7-26 18:21
wjgyz740526 发表于 2023-7-26 18:15
看到有刷新的动作了,但是估计注册表部分有问题,该隐藏的没隐藏,该显示的没显示

你自己不会举一反三,这个显示/隐藏的对象是系统(system)属性的文件,不是隐藏(hidden)属性的文件
作者: wjgyz740526    时间: 2023-7-26 21:11
Bluebells 发表于 2023-7-26 18:21
你自己不会举一反三,这个显示/隐藏的对象是系统(system)属性的文件,不是隐藏(hidden)属性的文件

那时候下班了,没注意注册表对应的是什么
作者: Bluebells    时间: 2023-7-26 21:42
本帖最后由 Bluebells 于 2023-7-26 21:43 编辑
wjgyz740526 发表于 2023-7-26 21:11
那时候下班了,没注意注册表对应的是什么

给个 PECMD 脚本你试试
  1. //注册桌面背景右键上下文菜单
  2. _SUB RegDeskSell
  3.     REGI $HKLM\SOFTWARE\Classes\DesktopBackground\Shell\ShowHideFiles\\MUIVerb=显示/隐藏特殊文件
  4.     REGI $HKLM\SOFTWARE\Classes\DesktopBackground\Shell\ShowHideFiles\command\\=PECMD.EXE LOAD %&CurFile% /SHS
  5. _END

  6. //注册目录背景右键上下文菜单
  7. _SUB RegDirShell
  8.     REGI $HKLM\SOFTWARE\Classes\Directory\background\Shell\ShowHideFiles\\MUIVerb=显示/隐藏特殊文件
  9.     REGI $HKLM\SOFTWARE\Classes\Directory\background\Shell\ShowHideFiles\command\\=PECMD.EXE LOAD %&CurFile% /SHS
  10. _END

  11. //自定义一个显示/隐藏特殊属性文件的函数
  12. _SUB ShowHideSwitch
  13.     //查询当前资源管理器关于隐藏文件的显示状态
  14.     REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden,&&HideState
  15.     FIND |%&HideState%=1,
  16.     {
  17.         //不在资源管理器中显示"隐藏(Hidden)"属性的文件
  18.         REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\\Hidden=0x00000002
  19.         //不在资源管理器中显示"系统(System)"属性的文件
  20.         REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\\ShowSuperHidden=0x00000000
  21.     }!{
  22.         //在资源管理器中显示"隐藏(Hidden)"属性的文件
  23.         REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\\Hidden=0x00000001
  24.         //在资源管理器中显示"系统(System)"属性的文件
  25.         REGI #HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\\ShowSuperHidden=0x00000001
  26.     }
  27.     //刷新资源管理器以使更改立即生效
  28.     CALL $user32.dll,PostMessageW,#65535,#273,#41504,Null
  29.     //下一行命令在一些旧版本的 PECMD 可能会无效, 故是使用上一行命令
  30.     ;ENVI @@POSTMSG=65535;273;41504;Null
  31. _END

  32. FIND $/RDS=%~1,CALL RegDeskSell
  33. FIND $/RDS=%~2,CALL RegDeskSell
  34. FIND $/RFS=%~1,CALL RegDirShell
  35. FIND $/RFS=%~2,CALL RegDirShell
  36. FIND $/SHS=%~1,CALL ShowHideSwitch
复制代码
将上述内容保存到 D:\ShowHideFiles.wcs (也可以命名为其它名称, 包括扩展名) 文件, 然后用 PECMD 的 LOAD 命令加载:
PECMD.EXE LOAD D:\ShowHideFiles.wcs /RDS /RFS
PS: 参数"/RDS"表示注册桌面背景右键上下文菜单, "/RFS"参数表示注册目录背景右键上下文菜单; 这两个参数, 可以注册其一或两者




作者: wjgyz740526    时间: 2023-7-27 08:21
Bluebells 发表于 2023-7-26 21:42
给个 PECMD 脚本你试试
将上述内容保存到 D:\ShowHideFiles.wcs (也可以命名为其它名称, 包括扩展名) 文 ...

厉害!!!!!!!
作者: iaanqrm    时间: 2023-7-27 08:34

作者: wjgyz740526    时间: 2023-7-27 08:35
本帖最后由 wjgyz740526 于 2023-7-27 08:40 编辑
Bluebells 发表于 2023-7-26 21:42
给个 PECMD 脚本你试试
将上述内容保存到 D:\ShowHideFiles.wcs (也可以命名为其它名称, 包括扩展名) 文 ...

测试成功!
谢谢你

作者: diskmans    时间: 2023-10-29 13:29
好的,谢谢!你还真有两把刷子!
作者: smss    时间: 2023-12-13 14:04
原贴是我早期写的一个版本后来融合了VBS
http://www.bathome.net/thread-51668-1-1.html
作者: hehuiying    时间: 2024-4-22 04:54
谢谢分享
作者: lxj0209103    时间: 2025-1-17 12:35
在11pe里右键菜单选择隐藏系统文件和扩展名后没有效果,没有显示扩展名,删除12和18句代码后也没有效果。pecmd版本了没有成功,不知道哪个问题没有集成到右键。
作者: wjgyz740526    时间: 2025-1-17 18:04
pecmd版本的?21楼代码直接复制即可
作者: nianyueriPE    时间: 2025-1-17 20:23
谢谢分享
作者: nianyueriPE    时间: 2025-1-17 20:23
下载试试




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3