无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 26956|回复: 46
打印 上一主题 下一主题

[分享] 最新版 Win10 PE 右键新建菜单卡死的解决方法

    [复制链接]
跳转到指定楼层
1#
发表于 2017-4-1 07:36:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)

文件清单:
  1. WinXNew
  2.         hiderun_x64.exe        4kb 隐藏运行程序
  3.         hiderun_x86.exe        3kb 隐藏运行程序
  4.         INIT.bat                     wimbuilder的PATCH预处理脚本,负责复制对应版本的hiderrun.exe和WinXNew.bat到System32目录
  5.         WinXNew.bat             新建批处理,判断文件存在性,自动获取新的文件名并创建的脚本
  6.         WinXNew.reg             模拟新建菜单的注册表
复制代码



WinXNew.bat:
  1. @echo off
  2. cd /d "%~2"

  3. set type=%1
  4. set folder=文件夹
  5. set .txt=文本文档
  6. set .bmp=位图图像

  7. call set filename=新建%%%type%%%
  8. set newfilename=%filename%
  9. if not [%type%]==[folder] (
  10.   set newfilename=%filename%%type%
  11. )

  12. set /a idx=1
  13. :CHECKNAME
  14. set /a idx+=1
  15. if not exist "%newfilename%" goto :CREATION
  16. call :GETNEWNAME %idx%
  17. goto :CHECKNAME


  18. :CREATION
  19. rem "%newfilename%"
  20. if [%type%]==[folder] (
  21.   mkdir "%newfilename%"
  22. ) else (
  23.   cd.>"%newfilename%"
  24. )
  25. goto :EOF

  26. :GETNEWNAME
  27. set "newfilename=%filename% (%1)"
  28. if not [%type%]==[folder] (
  29.   set "newfilename=%newfilename%%type%"
  30. )
  31. goto :EOF
复制代码


WinXNew.reg:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew]
  3. "MUIVerb"="新建(&W)"
  4. "SubCommands"=""
  5. "NODEFAULT"=""
  6. "Position"="Bottom"
  7. "SeparatorAfter"=""

  8. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell]

  9. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\0folder]
  10. "MUIVerb"="文件夹(&F)"
  11. "icon"="shell32.dll,3"
  12. "SeparatorAfter"=""
  13. "CommandFlags"=dword:00000040

  14. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\0folder\command]
  15. @="hiderun.exe WinXNew.bat folder "%V""

  16. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\1.txt]
  17. "MUIVerb"="文本文档"
  18. "Icon"="imageres.dll,-102"

  19. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\1.txt\command]
  20. @="hiderun.exe WinXNew.bat .txt "%V""

  21. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\2.bmp]
  22. "MUIVerb"="BMP 图像"
  23. "Icon"="imageres.dll,-70"

  24. [HKEY_CLASSES_ROOT\Directory\Background\shell\WinXNew\shell\2.bmp\command]
  25. @="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进入改名状态。

评分

参与人数 6无忧币 +30 收起 理由
zmac2007 + 5
wimboot + 5 很给力!
nf17b + 5 赞一个!
hero8000 + 5 赞一个!
+ 5 神马都是浮云
freesoft00 + 5 微软发来贺电

查看全部评分

推荐
发表于 2017-4-19 09:05:54 | 只看该作者
slore 发表于 2017-4-18 22:09
y大就是厉害。要不你发个帖子详细说下服务的文件列表,
db文件,如果有精简的db的话最好,我1 ...

HKEY_LOCAL_MACHINE\system\ControlSet001\Services\StateRepository
system32\StateRepository.Core.dll;Windows.StateRepositoryBroker.dll;Windows.StateRepositoryClient.dll;Windows.StateRepository.dll
system32\zh-cn\Windows.StateRepository.dll.mui
X:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-*

AppRepository.7z

96.78 KB, 下载次数: 170, 下载积分: 无忧币 -2

点评

15063PE 32位系统右键 “新建” 菜单可以恢复成正常系统界面,大师又立了新功!  详情 回复 发表于 2017-4-19 12:40

评分

参与人数 5无忧币 +21 收起 理由
lessic + 1 赞一个!
zmac2007 + 5
tools241 + 5 很给力!
立帮电子 + 5 很给力!
fish2006 + 5 很给力! 盼再接再厉,再创新高!

查看全部评分

回复

使用道具 举报

推荐
 楼主| 发表于 2017-4-1 10:59:12 来自手机 | 只看该作者
frg521 发表于 2017-4-1 10:42
32和64位同时有这个问题吗?我在论坛找找这最新的PE没有的话还请提供个样本

15063自带boot.wim,打开记事本,选择文件,新建就卡死了。
回复

使用道具 举报

4#
发表于 2017-4-1 07:45:27 | 只看该作者
支持原创,感谢分享
回复

使用道具 举报

5#
发表于 2017-4-1 07:53:03 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

6#
发表于 2017-4-1 11:02:48 | 只看该作者
支持一个!
回复

使用道具 举报

7#
发表于 2017-4-1 12:33:43 | 只看该作者
本帖最后由 hsmy 于 2017-4-1 12:35 编辑

这个问题困扰我很久了,17号发布15063,当天就手工做了一个PE,其他都没问题,只有新建卡死问题。网上没有这个版本的PE,无法比较。当时以为是注册表的问题,原来却是微软的问题。
今天得以临时解决,感谢楼主
我的做法是:
删除了自带的右键新建:
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shellex\ContextMenuHandlers\New]
导入了楼主的注册表,把2文件复制进PE,打包进入PE,测试正常

点评

15063?可否共享一下?谢谢了!  详情 回复 发表于 2017-4-1 15:32
回复

使用道具 举报

8#
发表于 2017-4-1 15:32:32 | 只看该作者
hsmy 发表于 2017-4-1 12:33
这个问题困扰我很久了,17号发布15063,当天就手工做了一个PE,其他都没问题,只有新建卡死问题。网上没有 ...


15063PE?可否共享一下?谢谢了!
回复

使用道具 举报

9#
发表于 2017-4-7 18:53:19 | 只看该作者
谢谢分享
回复

使用道具 举报

10#
发表于 2017-4-10 09:11:23 | 只看该作者
楼主   

能不用用这个功能 替换   不借助外壳

点评

自己写个调用系统shell的创建功能?应该是可以,不过这不是需要有编程知识,如果有编程能力直接写个外壳扩展,regsvr32 winxnew.dll就可以了。 但是,不是程序员怎么办?PE还不能玩了?给出的这个方法是“普通”用  详情 回复 发表于 2017-4-10 20:15
回复

使用道具 举报

11#
 楼主| 发表于 2017-4-10 20:15:10 | 只看该作者
23456 发表于 2017-4-10 09:11
楼主   

能不用用这个功能 替换   不借助外壳

自己写个调用系统shell的创建功能?应该是可以,不过这不是需要有编程知识,如果有编程能力直接写个外壳扩展,regsvr32 winxnew.dll就可以了。
但是,不是程序员怎么办?PE还不能玩了?给出的这个方法是“普通”用户也能想出并自己解决问题的方法。
没有多少程序员为PE买单。
正常系统功能正常,这个帖子是抛砖引玉,希望有人补注册表,DLL,补系统服务能用起来。
如果特别复杂就算了,毕竟是PE不是么?新建这个功能用不了多少。

我对PE的定位不是要和正常系统一样完全,而是投入的时间,文件大小的性价比合适,功能可用就行了。
不要浪费时间到不值得的东西。有这时间我都能把WIFI连接功能写出来了。

点评

我只是随便问问 大师别见怪 。  详情 回复 发表于 2017-4-10 22:49
回复

使用道具 举报

12#
发表于 2017-4-10 21:10:57 | 只看该作者
thank you.
回复

使用道具 举报

13#
发表于 2017-4-10 22:49:46 | 只看该作者
slore 发表于 2017-4-10 20:15
自己写个调用系统shell的创建功能?应该是可以,不过这不是需要有编程知识,如果有编程能力直接写个外壳 ...

我只是随便问问  大师别见怪    。
回复

使用道具 举报

14#
发表于 2017-4-12 23:43:58 | 只看该作者
StateRepository服务试了一下,补上之后explorer.exe加载卡死了。。。

点评

哦,那我删除掉,谁搞出来了再贴个链接算了。我看了下,自己实现new功能就100来行代码,不过批处理就够用没必要。  详情 回复 发表于 2017-4-13 00:11
回复

使用道具 举报

15#
 楼主| 发表于 2017-4-13 00:11:19 来自手机 | 只看该作者
红毛樱木 发表于 2017-4-12 23:43
StateRepository服务试了一下,补上之后explorer.exe加载卡死了。。。

哦,那我删除掉,谁搞出来了再贴个链接算了。我看了下,自己实现new功能就100来行代码,不过批处理就够用没必要。

点评

这个新建菜单,是不是shell32.dll产生的?  详情 回复 发表于 2017-4-13 15:12
也许是我处理的有问题,看看别人有没有途径解决的。  详情 回复 发表于 2017-4-13 01:45
回复

使用道具 举报

16#
发表于 2017-4-13 01:45:04 | 只看该作者
slore 发表于 2017-4-13 00:11
哦,那我删除掉,谁搞出来了再贴个链接算了。我看了下,自己实现new功能就100来行代码,不过批处理就够用 ...

也许是我处理的有问题,看看别人有没有途径解决的。
回复

使用道具 举报

17#
发表于 2017-4-13 11:37:11 来自手机 | 只看该作者
ProgramData\Microsoft\Windows\AppRepository\StateRepository xxx 等4个文件,正常系统才有

点评

这个要加上,服务才能启动?  详情 回复 发表于 2017-4-13 15:11
回复

使用道具 举报

18#
发表于 2017-4-13 11:44:34 来自手机 | 只看该作者
两个srd文件是sqlite3数据库,想减肥自己编辑一下
回复

使用道具 举报

19#
发表于 2017-4-13 15:11:26 来自手机 | 只看该作者
yamingw 发表于 2017-4-13 11:37
ProgramData\Microsoft\Windows\AppRepository\StateRepository xxx 等4个文件,正常系统才有

这个要加上,服务才能启动?
回复

使用道具 举报

20#
发表于 2017-4-13 15:12:01 来自手机 | 只看该作者
slore 发表于 2017-4-13 00:11
哦,那我删除掉,谁搞出来了再贴个链接算了。我看了下,自己实现new功能就100来行代码,不过批处理就够用 ...

这个新建菜单,是不是shell32.dll产生的?
回复

使用道具 举报

21#
发表于 2017-4-13 18:59:05 | 只看该作者
没找到完美方法,没了新建就是不太方便
回复

使用道具 举报

22#
发表于 2017-4-14 18:48:44 | 只看该作者
LZ 的方式可以
回复

使用道具 举报

23#
发表于 2017-4-18 20:04:09 | 只看该作者
感觉到主要是在遍历shellnew时卡死了,这个应该是explorer.exe引起的,不知换壳行不行,或者用早期版本如14393不知如何?

点评

调查别的问题啊,这个问题真非要解决,搞个外壳扩展就解决掉了,没意思。  详情 回复 发表于 2017-4-18 21:28
和explorer没关系。boot.wim启动notepad.exe打开文件,右键新建也死。遍历也已经遍历完了。  详情 回复 发表于 2017-4-18 21:27
回复

使用道具 举报

24#
 楼主| 发表于 2017-4-18 21:27:17 | 只看该作者
hhh333 发表于 2017-4-18 20:04
感觉到主要是在遍历shellnew时卡死了,这个应该是explorer.exe引起的,不知换壳行不行,或者用早期版本如14 ...

和explorer没关系。boot.wim启动notepad.exe打开文件,右键新建也死。遍历也已经遍历完了。
回复

使用道具 举报

25#
 楼主| 发表于 2017-4-18 21:28:40 | 只看该作者
hhh333 发表于 2017-4-18 20:04
感觉到主要是在遍历shellnew时卡死了,这个应该是explorer.exe引起的,不知换壳行不行,或者用早期版本如14 ...

调查别的问题啊,这个问题真非要解决,搞个外壳扩展就解决掉了,没意思。
回复

使用道具 举报

26#
发表于 2017-4-18 21:59:12 来自手机 | 只看该作者
13楼的服务加上16楼的文件就可以了,为什么没人试一下

点评

y大就是厉害。要不你发个帖子详细说下服务的文件列表, db文件,如果有精简的db的话最好,我1楼就更下解决方法帖子链接。 我个人没尝试,感觉服务就5MB多,那db不大也不划算。这个功能使用频率不搞,  详情 回复 发表于 2017-4-18 22:09
回复

使用道具 举报

27#
 楼主| 发表于 2017-4-18 22:09:41 | 只看该作者
yamingw 发表于 2017-4-18 21:59
13楼的服务加上16楼的文件就可以了,为什么没人试一下

y大就是厉害。要不你发个帖子详细说下服务的文件列表,
db文件,如果有精简的db的话最好,我1楼就更下解决方法帖子链接。

我个人没尝试,感觉服务就5MB多,那db不大也不划算。这个功能使用频率不搞,
batch+reg的话,不用挂载install.wim就能解决,生成PE速度快。

点评

试了你的方法,批处理也比较巧,我是用PECMD来调用批处理的。不过似乎管理器的新建文件夹失效了。现在在试yamingw 的方案,这个应该算是彻底的方案  详情 回复 发表于 2017-4-19 09:35
HKEY_LOCAL_MACHINE\system\ControlSet001\Services\StateRepository system32\StateRepository.Core.dll;Windows.StateRepositoryBroker.dll;Windows.StateRepositoryClient.dll;Windows.StateRepository.dll sys  详情 回复 发表于 2017-4-19 09:05
回复

使用道具 举报

28#
 楼主| 发表于 2017-4-18 23:37:13 | 只看该作者
frg521 发表于 2017-4-18 22:44
i want Win+D  , why so hard .
Ke Wu , mei you shu ru fa.

WIN+D 已经更新了完美解决方案,随便会点pecmd或者autoit就能搞出来啊。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378303
回复

使用道具 举报

29#
发表于 2017-4-19 09:35:10 | 只看该作者
slore 发表于 2017-4-18 22:09
y大就是厉害。要不你发个帖子详细说下服务的文件列表,
db文件,如果有精简的db的话最好,我1 ...

试了你的方法,批处理也比较巧,我是用PECMD来调用批处理的。不过似乎管理器的新建文件夹失效了。现在在试yamingw 的方案,这个应该算是彻底的方案
回复

使用道具 举报

30#
发表于 2017-4-19 09:49:12 | 只看该作者

成功了,打包后体积约增加1M
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 06:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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