无忧启动论坛

标题: 03PE的隐藏受保护的操作系统文件总是被勾上 [打印本页]

作者: 1400700226    时间: 2016-12-21 12:55
标题: 03PE的隐藏受保护的操作系统文件总是被勾上
本帖最后由 1400700226 于 2016-12-21 23:03 编辑

pecmd.ini中的

CALL $SHELL32.DLL,DllInstall,#1,U

会删掉

HKCU\Software\microsoft\windows\currentversion\explorer\advanced下的showsuperhidden

从而导致文件夹选项里的隐藏受保护的操作系统文件被勾上。然而实际上受保护的操作系统文件还是显示的。也就是说虽勾上了但是无效,矛盾。

即使在CALL $SHELL32.DLL,DllInstall,#1,U之后再REGI导入这个键值,

在启用网络组件重启explorer.exe刷新系统后,

HKCU\Software\microsoft\windows\currentversion\explorer\advanced下的showsuperhidden

这个键值就会又被删掉。然而实际上受保护的操作系统文件也还是显示的。

安装IE6的IE6.INF中,有如下语句:
[Base.IE.AddReg]
HKLM,"Software\Microsoft\Active Setup\Installed Components\%CLSID_IESHELL%","StubPath",0x00020000,"regsvr32.exe /s /n /i:U shell32.dll"

会造成键值被删除。看样子原理一样。

我对比了PE启动后的各个注册表分支与启动前配置单元的区别,

发现只有这个键值是值得注意的被删掉的。

shell32.dll中有REGINST资源:

我尝试在REGINST中的[RegAdvancedOptions]段添加如下语句:
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowSuper1Hidden",%REGDW%,0x00000001

然后注册表的HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced下就有ShowSuper1Hidden键值。

然而如果添加
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowSuperHidden",%REGDW%,0x00000001

注册表中就没有ShowSuperHidden键值。

可见,删除ShowSuperHidden键值的操作在REGINST操作之后。

我尝试直接删掉shell32.dll中的REGINST资源,发现ShowSuperHidden键值仍会被删除。猜测删除ShowSuperHidden键值的操作不在REGINST之中。


所以请教大家:

为什么偏偏HKCU\Software\microsoft\windows\currentversion\explorer\advanced下的showsuperhidden=1这个键值总是被删掉?

怎样才能避免这个键值被删掉?

谢谢
作者: slore    时间: 2016-12-21 20:26
为什么这个键值被删掉了之后隐藏受保护的操作系统文件被勾上了之后,受保护的操作系统文件仍然是显示的?


打勾不打勾是选项界面打开时读取注册表表现的,但是explorer显示不显示并不是时时刻刻都检查下注册表,
初次启动的时候读取,后面如果谁变更了,需要广播通知窗口,explorer窗口接收到消息,
窗口才重新读取这个注册表值反应出来的。

我是不清楚CALL $SHELL32.DLL,DllInstall,#1,U干嘛,为什么非要调用?

不想改变那个值的话,注册表设置只读全权限不行么,或者调用完这个命令自己把注册表改回来,
当然explorer还得通知,可以通过调用 assoc 关联任意扩展名来触发注册表变更通知。
作者: 1400700226    时间: 2016-12-21 20:58
slore 发表于 2016-12-21 20:26
打勾不打勾是选项界面打开时读取注册表表现的,但是explorer显示不显示并不是时时刻刻都检查下注册表, ...

感谢,那个调用估计是为了显示任务栏左面的显示桌面图标,另外在安装IE后进行更新桌面操作。

我不知道还有多少regsvr32 /n /i:U shell32.dll操作,总不能在每次之后都WAIT一会儿然后添加注册表键值吧。

我的QQ是1400700226,希望您加我,请教您,谢谢了!
作者: slore    时间: 2016-12-21 23:02
windows 2003 好老了,只是看看而已帮不上什么忙,你看下REGINST有没有下面的策略,有的话,把这行删除了试试。

HKLM,"%ADV_FOLDER%\SuperHidden\Policy\DontShowSuperHidden"
作者: 1400700226    时间: 2016-12-21 23:05
本帖最后由 1400700226 于 2016-12-21 23:17 编辑
slore 发表于 2016-12-21 23:02
windows 2003 好老了,只是看看而已帮不上什么忙,你看下REGINST有没有下面的策略,有的话,把这行删除了试 ...


我尝试把REGINST资源全部删掉也没效果。

你说的这句好像是用于设置是否显示“隐藏受保护的操作系统文件”这个复选框的。与问题无关

虽然老了,但是我这里用的还有太多。实在麻烦您帮研究一下!
作者: slore    时间: 2016-12-22 00:56
从而导致文件夹选项里的隐藏受保护的操作系统文件被勾上。然而实际上受保护的操作系统文件还是显示的。也就是说虽勾上了但是无效,矛盾。


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden]
下面把DefaultValue改成0

这样被删除了,打开文件选项对话框,默认看到就是不勾选状态,可以保持一致。

至于这个项目被删除应该是默认这个值就没有,DllInstall恢复了注册表吧,所以没有了。
shell内部的话,默认值应该是1显示隐藏,所以重新注册就显示了。

作者: 1400700226    时间: 2016-12-22 13:39
slore 发表于 2016-12-22 00:56
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidd ...

感谢!我再详细测试!
作者: 2012bzsb    时间: 2016-12-22 17:05
看看直接修改注册表,

[HKEY_LOCAL_MACHINE\pe-soft\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden]
"DefaultValue"=dword:00000001


作者: 1400700226    时间: 2016-12-22 17:52
2012bzsb 发表于 2016-12-22 17:05
看看直接修改注册表,

[HKEY_LOCAL_MACHINE\pe-soft\Microsoft\Windows\CurrentVersion\Explorer\Advance ...

感谢!我试试!
作者: 807979023    时间: 2016-12-22 20:10
试一试,看行不行。

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v "CheckedValue" /t REG_DWORD /d 1 /f

作者: 1400700226    时间: 2016-12-22 20:19
807979023 发表于 2016-12-22 20:10
试一试,看行不行。

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Fold ...

万分感谢!可以了!
作者: xiaotudou    时间: 2017-3-30 18:13
提示: 作者被禁止或删除 内容自动屏蔽




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