无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 1624|回复: 30
打印 上一主题 下一主题

[已解决] 脱离WScript添加右键显示隐藏文件扩展名,附cmd和pecmd代码

  [复制链接]
跳转到指定楼层
1#
发表于 2023-7-26 09:18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
这两句——注册表权限问题导致不能实时修改
2#
发表于 2023-7-26 09:35:17 | 只看该作者
补上WScript.exe不就好了?
回复

使用道具 举报

3#
 楼主| 发表于 2023-7-26 09:42:48 | 只看该作者
我怕还要WScript.exe的支持文件和注册表,那就臃肿了
回复

使用道具 举报

4#
发表于 2023-7-26 09:53:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
 楼主| 发表于 2023-7-26 10:29:35 | 只看该作者
2011wyy 发表于 2023-7-26 09:53
很多 PE 默认是显示隐藏的系统文件,楼主为何还要再要右键菜单呢?

我这个没有啊,要不怎么多这个事
回复

使用道具 举报

6#
发表于 2023-7-26 11:28:36 | 只看该作者
本帖最后由 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
复制代码

回复

使用道具 举报

7#
发表于 2023-7-26 12:42:09 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

8#
发表于 2023-7-26 13:12:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

9#
 楼主| 发表于 2023-7-26 13:13:11 来自手机 | 只看该作者
Bluebells 发表于 2023-7-26 11:28
这不是注册表数据就可以完成的事?

卧槽,没想到pecmd

谢谢
回复

使用道具 举报

10#
发表于 2023-7-26 14:25:48 | 只看该作者
学习了
回复

使用道具 举报

11#
 楼主| 发表于 2023-7-26 16:34:29 | 只看该作者
Bluebells 发表于 2023-7-26 11:28
这不是注册表数据就可以完成的事?

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

谢谢你的思路
回复

使用道具 举报

12#
发表于 2023-7-26 16:50:50 | 只看该作者
wjgyz740526 发表于 2023-7-26 16:34
看了下, 还要修改, 不能自动刷新,还要加上显示隐藏后缀名

谢谢你的思路

改进了一下刷新问题, 你自己测试一下(改进的代码还在原来楼层)
关于"隐藏已知文件类型的扩展名", 其注册表位置为:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"HideFileExt"=dword:00000001
PS: 键值为 0 则不隐藏, 非 0 则隐藏
回复

使用道具 举报

13#
 楼主| 发表于 2023-7-26 17:03:33 来自手机 | 只看该作者
谢谢,正在折腾
回复

使用道具 举报

14#
 楼主| 发表于 2023-7-26 17:06:11 来自手机 | 只看该作者
Bluebells 发表于 2023-7-26 16:50
改进了一下刷新问题, 你自己测试一下(改进的代码还在原来楼层)
关于"隐藏已知文件类型的扩展名", 其注册 ...

我现在想,既然pecmd可以实现,那就写到批处理调用,这样右键菜单可以合并到一个,调用批处理就可以了
回复

使用道具 举报

15#
 楼主| 发表于 2023-7-26 17:14:10 | 只看该作者
Bluebells 发表于 2023-7-26 16:50
改进了一下刷新问题, 你自己测试一下(改进的代码还在原来楼层)
关于"隐藏已知文件类型的扩展名", 其注册 ...

还是无法自动刷新
回复

使用道具 举报

16#
发表于 2023-7-26 17:18:58 | 只看该作者
wjgyz740526 发表于 2023-7-26 17:14
还是无法自动刷新

这种刷新不能刷新当前打开的窗口的页面,切换一下就可以看到效果。如果你不介意重启 Explorer,那就直接 kill explorer.exe
回复

使用道具 举报

17#
发表于 2023-7-26 17:23:12 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

18#
 楼主| 发表于 2023-7-26 17:31:38 | 只看该作者
2011wyy 发表于 2023-7-26 17:23
支持折腾

刷新是个头疼的事情

这样太麻烦了
回复

使用道具 举报

19#
发表于 2023-7-26 17:33:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

20#
 楼主| 发表于 2023-7-26 17:33:52 | 只看该作者
Bluebells 发表于 2023-7-26 17:18
这种刷新不能刷新当前打开的窗口的页面,切换一下就可以看到效果。如果你不介意重启 Explorer,那就直接  ...

如果能用pecmd获取到当前打开的文件夹路径就好办了,现kill掉explorer进程,然后打开这个路径
回复

使用道具 举报

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

又改进了一下代码, 再试试看
回复

使用道具 举报

22#
 楼主| 发表于 2023-7-26 18:15:34 | 只看该作者
Bluebells 发表于 2023-7-26 18:12
又改进了一下代码, 再试试看

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

回复

使用道具 举报

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

你自己不会举一反三,这个显示/隐藏的对象是系统(system)属性的文件,不是隐藏(hidden)属性的文件
回复

使用道具 举报

24#
 楼主| 发表于 2023-7-26 21:11:30 来自手机 | 只看该作者
Bluebells 发表于 2023-7-26 18:21
你自己不会举一反三,这个显示/隐藏的对象是系统(system)属性的文件,不是隐藏(hidden)属性的文件

那时候下班了,没注意注册表对应的是什么
回复

使用道具 举报

25#
发表于 2023-7-26 21:42:21 | 只看该作者
本帖最后由 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"参数表示注册目录背景右键上下文菜单; 这两个参数, 可以注册其一或两者



回复

使用道具 举报

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

厉害!!!!!!!
回复

使用道具 举报

27#
发表于 2023-7-27 08:34:23 | 只看该作者
回复

使用道具 举报

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

测试成功!
谢谢你
回复

使用道具 举报

29#
发表于 2023-10-29 13:29:47 来自手机 | 只看该作者
好的,谢谢!你还真有两把刷子!
回复

使用道具 举报

30#
发表于 2023-12-13 14:04:48 | 只看该作者
原贴是我早期写的一个版本后来融合了VBS
http://www.bathome.net/thread-51668-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-28 12:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表