|
本帖最后由 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这个键值总是被删掉?
怎样才能避免这个键值被删掉?
谢谢 |
|