|
本帖最后由 slore 于 2017-4-19 12:36 编辑
不知道从那个预览版开始在10PE下,右键新建菜单会卡死。
原因,微软改变了依赖方式,最新版依赖StateRepository服务,而这个服务除了服务启动以外,还需要些DB文件。
最终解决方案(yamingw):
1.追加StateRepository服务
system32\
StateRepository.Core.dll;
Windows.StateRepositoryBroker.dll;
Windows.StateRepositoryClient.dll;
Windows.StateRepository.dll
system32\zh-cn\Windows.StateRepository.dll.mui
StateRepository-Deployment.srd
StateRepository-Deployment.srd-shm
StateRepository-Deployment.srd-wal
StateRepository-Machine.srd
StateRepository-Machine.srd-shm
StateRepository-Machine.srd-wal
2.从正常系统提取:
ProgramData\Microsoft\Windows\AppRepository\StateRepository-*
到PE中。
所有文件,压缩到内核的话,增加1MB左右。
详细见30楼yamingw的回帖。
http://bbs.wuyou.net/forum.php?m ... &fromuid=166812
曲线解决方案:
2个脚本,不到 1KB,一个创建自制右键“新建菜单”,一个用来判断重名并新建文件(夹)。
微软越来越不靠谱了,15063版本依然没有解决。啥时候跟LINUX学了,遇到问题还得用户自己打补丁(还不开源 )。
作为一名码农,第一想法是写个外壳扩展,既然是微软把依赖关系搞的乱七八糟,
也许哪天就修复了白折腾,还是写写注册表,搞个批处理算了。
放到wimbuilder中可以直接给boot.wim(winre.wim)打的补丁文件:
WinXNew_Patch.zip
(4.33 KB, 下载次数: 167)
文件清单:
- WinXNew
- hiderun_x64.exe 4kb 隐藏运行程序
- hiderun_x86.exe 3kb 隐藏运行程序
- INIT.bat wimbuilder的PATCH预处理脚本,负责复制对应版本的hiderrun.exe和WinXNew.bat到System32目录
- WinXNew.bat 新建批处理,判断文件存在性,自动获取新的文件名并创建的脚本
- WinXNew.reg 模拟新建菜单的注册表
复制代码
WinXNew.bat:
- @echo off
- cd /d "%~2"
- set type=%1
- set folder=文件夹
- set .txt=文本文档
- set .bmp=位图图像
- call set filename=新建%%%type%%%
- set newfilename=%filename%
- if not [%type%]==[folder] (
- set newfilename=%filename%%type%
- )
- set /a idx=1
- :CHECKNAME
- set /a idx+=1
- if not exist "%newfilename%" goto :CREATION
- call :GETNEWNAME %idx%
- goto :CHECKNAME
- :CREATION
- rem "%newfilename%"
- if [%type%]==[folder] (
- mkdir "%newfilename%"
- ) else (
- cd.>"%newfilename%"
- )
- goto :EOF
- :GETNEWNAME
- set "newfilename=%filename% (%1)"
- if not [%type%]==[folder] (
- set "newfilename=%newfilename%%type%"
- )
- goto :EOF
复制代码
WinXNew.reg:
- Windows Registry Editor Version 5.00
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew]
- "MUIVerb"="新建(&W)"
- "SubCommands"=""
- "NODEFAULT"=""
- "Position"="Bottom"
- "SeparatorAfter"=""
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell]
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\0folder]
- "MUIVerb"="文件夹(&F)"
- "icon"="shell32.dll,3"
- "SeparatorAfter"=""
- "CommandFlags"=dword:00000040
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\0folder\command]
- @="hiderun.exe WinXNew.bat folder "%V""
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\1.txt]
- "MUIVerb"="文本文档"
- "Icon"="imageres.dll,-102"
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\1.txt\command]
- @="hiderun.exe WinXNew.bat .txt "%V""
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\2.bmp]
- "MUIVerb"="BMP 图像"
- "Icon"="imageres.dll,-70"
- [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\2.bmp\command]
- @="hiderun.exe WinXNew.bat .bmp "%V""
复制代码
FYI:
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNew]
~reserved~存在,Classes不存在时就不会卡死了,出现一个空的子菜单(确认会遍历HKCR的ShellNew项目,但是不添加,不更新)
reserved~存在,Classes存在,不会卡死,但是也不出子菜单(确认不会遍历HKCR的ShellNew项目)
PS1:
缺点1:慢0.25秒(毕竟起了2个进程hiderun.exe和cmd.exe),缺点2:新建后的文件得自己F2进入改名状态。
|
评分
-
查看全部评分
|