无忧启动论坛

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

[原创] Windows10 14393 PE x86+64(2016.9.17更新)

    [复制链接]
1#
发表于 2016-4-30 02:58:17 | 显示全部楼层

感谢使用PExlorer,发现了很多问题呢。

51前改改,放假啦。

  • 命令行运行PExlorer时,如果定义第三方文件管理器,会调用第三方文件管理器。
  • WIN+E,WIN+L,WIN+D,WIN+R热键绑定到桌面窗口,使不使用任务栏模式也可以利用这些热键。
  • WIN+D显示桌面功能改善,增加过滤窗口列表。(你的TLB,其实还是窗口,不过滤掉的话,所有按钮最小化到左下角了,右上角的信息提示窗口也得过滤)
  • 绑定WIN键到WIN+Z,算是专门给你这个PE改的吧。WIN键可以打开/关闭TLB菜单。

PExlorer_ljycslg.zip (1.11 MB, 下载次数: 14)

全部参数化的,开始菜单做完RC版发布的时候这些问题和功能也一并吸收掉。

测试遇到别的问题的话,就站内消息再联络吧。

5.1假期快乐。晚安

点评

你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了 [attachimg]244485[/attachimg]  详情 回复 发表于 2016-4-30 08:37
回复

使用道具 举报

2#
发表于 2016-4-30 09:15:49 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

3#
发表于 2016-4-30 09:15:53 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

4#
发表于 2016-4-30 09:15:56 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

5#
发表于 2016-4-30 09:16:03 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

6#
发表于 2016-4-30 09:16:13 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

7#
发表于 2016-4-30 09:16:14 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

8#
发表于 2016-4-30 09:16:15 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

9#
发表于 2016-4-30 09:16:25 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

10#
发表于 2016-4-30 09:16:26 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

11#
发表于 2016-4-30 09:16:36 | 显示全部楼层
ljycslg 发表于 2016-4-30 08:37
你直接处理下点击绑定win+z,屏蔽掉内置的开始菜单,我把TLB隐藏在后面,就可以用你的任务栏了

汗😓,用我的任务栏啊。。。设计的时候是,没有我的开始菜单才绑定WIN+Z,早知道就有定义热键绑定就用新热键。
改很好改,放假期间没时间编译了现在。
回复

使用道具 举报

12#
发表于 2016-5-2 16:53:57 | 显示全部楼层
3.原生的文件对话框中做完操作(比如新建一个文件夹)不会及时刷新,结束壁纸进程就可以
  原PE默认壁纸进程wallpaperhost,现在用PExlorer都存在这个问题


从现象看,是注册了Shell窗口注册,可能某些消息没有处理,如果不注册的话,打开对话框自己处理所以就OK。
测试了下,确实去掉SHell窗口注册就可以了。但是,目前发现WIN键的消息无法触发,就是说按WIN键没反应了。这里不知道该牺牲哪个啊。对话框中自己F5下?还是不要WIN键,我再试试。

另外桌面图标问题彻底解决了。大小图标变动,刷新,改变任务栏,改变分辨率都会调整桌面图标了。
回复

使用道具 举报

13#
发表于 2016-5-5 23:43:13 | 显示全部楼层
内存占用问题,你有具体的操作步骤么。我开调试2小时了,内存最高到20多MB,中间有涨,但是会降下来。
挂掉还没遇到。加了几个监控点,内存申请了又释放了,没找到泄露点。你给我说下操作方法吧。(PE中的也行)

taskmemtest.png (176.07 KB, 下载次数: 191)

taskmemtest.png

点评

GDI句柄不断上升,正常explorer才不到800,dump传给你分析有没有用? [attachimg]244646[/attachimg]  详情 回复 发表于 2016-5-6 08:07
回复

使用道具 举报

14#
发表于 2016-5-6 10:02:40 | 显示全部楼层
ljycslg 发表于 2016-5-6 08:07
问题应该就是这里,GDI句柄泄漏,正常explorer才不到800,dump传给你分析有没有用?

GDI句柄泄漏我知道了。托盘和时钟区域,每次刷新背景,我从配置文件读取的任务栏颜色,创建的背景画笔用的TASKBAR_COLOR宏,这个宏每次都是创建一个新的GDI对象,所以泄漏了,改成全局变量了。

我先看看是不是GDI句柄超过默认的10000个所以程序掉了。

点评

对,到了9999不再涨了,整个桌面渲染崩了  发表于 2016-5-6 10:20
回复

使用道具 举报

15#
发表于 2016-5-13 12:57:48 | 显示全部楼层
ku588 发表于 2016-5-13 07:28
现在这个PE成了PExlorer的试验品,问题多多!
PExlorer也只能在这个PE中试验,发挥作用,
个人认为PExlor ...

PExlorer我个人定位为PE维护,辅助程序。我的目的是boot.wim直接启动不修改内核就能有较完整操作性的功能。
文件管理依然可以使用TC或者explorer++。
单纯PExlorer.exe的更新完全没有必要对内核版本更新,PExlorer初衷是外置随时更新,随时运行就能用的程序。

ljycslg除了PExlorer以外,还有些内核的更新,比如托盘,驱动等,还是建议用新的版本。
至于外壳相关的东西,自己按自己喜欢的可以先动手。
ljycslg如果没更新的话,要保留桌面,修改下 "notaskbar":true,启动下Em的任务栏和托盘就可以了。
桌面都不需要的话,直接wallpaperhost换成系统的wallpaperhost的就行了。

>PExlorer做资源管理器,删文件时什么提示都没有,跟没删除一样,实际已删除了,这导致在处理文件的过程中会判断失误!
只不是PExlorer独自的问题,你记事本打开对话框,一样是这样的。boot.wim也是这样的。
我自己已经有解决方法了,但是还是再追求更好的解决方案。

TC可以解决,但是TC,explorer++也有很多操作很不顺的地方,explorer++我操作也会有崩溃。
TC稳定性很好,但是操作不太方便,比如双窗口想复制部分多个文件过来,无法多选!
0422的PE就问题不多?平板上Em的任务栏,托盘不支持高DPI显示很小,操作不便,
Em多少年没有更新了?explorer++的issue列表你看了么?稳定?

文件操作这块只有系统的 explorer.exe到目前为止才是最好的。

这段时间感谢ljycslg对PExlorer的试用,所以有了很多问题,
进行了很多改进,没人使用的话,
我就是boot.wim装个系统,一点问题都没有也就不会去完善产品。
当然非explorer的PE没有新的推动的话,也就是现在这样了。

回复

使用道具 举报

16#
发表于 2016-5-13 16:02:22 | 显示全部楼层
ku588 发表于 2016-5-13 14:57
不能否认 slore 大师对PExlorer的不断的开发与完善,成熟确实是需要过程的!
我用ljycslg的PE,文件管 ...

感谢反馈。要比较TLB+Em+TC这些开发了多年的软件,PExlorer不过2个月的一个人开发的生命期,确实离成熟还很远。
但这些3方停更很久了,而且本身就是正常系统下的工具,最初都不是为了PE而生的,
目前explorer也好,第3方也好,总有小的细节,用起来很不方便。
一些需求无法满足。

explorer或第3方工具的功能问题
   WIN+D显示桌面无效
   开始菜单无效
   托盘网络无法点击

如果自己做,这些都是可以实现的!
我自己做PExlorer也是想学习下Shell的各种接口处理,补充一些自定义接口来完善shell,不被微软牵着走。

基本接口搞通了,界面样子也可以随意变化了,毕竟这些部分就是自己处理的地方。
比如开始菜单搜索我输入 35+7可以直接得出算数结果,而不是文件搜索,可以直接开始菜单
获取颜色码等,自己顺手的操作当组件集成起来。

PExlorer说实话,有点生不逢时吧,如果在微软的explorer不能加载的时候,发布的话,
肯定会受到大量反馈和修正吧。目前确实大部分PE都是有explorer.exe的所以
ljycslg的非explorer的PE和我刚好可以互补。

对于PExlorer来说不显示任务栏这种需求肯定是不需要的。所以根据ljycslg的PE,
提供了不显示任务栏的参数,WIN键可以绑定TLB的WIN+Z键等。完善PE上的一些不足,
同时PExlorer有使用的地方,得到了反馈,就有了持续更新的目标。

其实我对PE一直有一种结构:
ISO
   PE.WIM
   PEConfig
    +Init阶段1.bat
    +Init阶段2.bat
   APPS
    +PExlorer
       PExlorer.exe

内核启动扫描外置是否有PEConfig文件夹,有的话,根据不同时间点调用初始化bat,
比如可以加载PExlorer,复制到X盘,启动PExlorer,否则原本的模式启动。
对于外置的更新,配置完全可以简单修改。不用拆解WIM内核
当然,不限于PExlorer,比如DG更新下,ghost更新下,完全没有必要频繁更新。
大概3个月,半年统一的将外置的更新,更新到内核内置。(也可以做个批处理,用户自己运行,这样不用每次修改都下很大的ISO了。)

不想用PExlorer,或者自己更新工具的话,不用等待PE发布者,自己可以快速修改(ISO打开替换或者删除,另存为)。
(扫描外置,加载配置也是PExlorer启动时打算做的事,代替的脚本很多,优先度也不高)
回复

使用道具 举报

17#
发表于 2016-5-14 10:19:45 | 显示全部楼层
本帖最后由 slore 于 2016-5-14 10:23 编辑
1.临时目录改变后无法全局生效,重开TC又回到X盘了,不过一般也不会有问题
除非极端情况,x盘 32位有1G,64位8G

3.原生的文件对话框中做完操作(比如新建一个文件夹)不会及时刷新,结束壁纸进程就可以
  原PE默认壁纸进程wallpaperhost,现在用PExlorer都存在这个问题


1. setx命令可以修改环境变量并通知所有程序,全局生效。可以试试。

主要说下3问题:
因为PExlorer利用打开对话框做文件管理器了,所以这里看了下。

comdlg32.dll!CFileOpenSave::Show(struct HWND__ *)
  shell32.dll!SHChangeNotifyRegisterThread()
    shell32.dll!_SCNGetWindow()
      shell32.dll!_SCNGetWindow()
        shell32.dll!_GetDesktop(void) <- 获取桌面窗口,存在就将变化通知事件发送到桌面窗口处理
        ..
        shell32.dll!SCNInitialize()   <- 桌面窗口如果不存在,程序自己进行变化通知ChangeNotify事件处理

所以处理方法,让_GetDesktop()获取桌面窗口后,让程序认为不存在桌面窗口。
把je跳转语句(74)改为jmp常跳转指令(EB)。

_SCNGetWindow
00007FFF7E053608
...
00007FFF7E053643  e8 xx xx xx xx call        _GetDesktop (07FFF7DFBD95Ch)
00007FFF7E053648  48 85 c0       test        rax,rax
00007FFF7E05364B  74             je         _SCNGetWindow+6Ch (07FFF7E053674h)
                  74->EB ---> je->jmp


修改方法:
1.用UE或者Hex打开shell32.dll,搜索定位码
2(x64).找到定位码之后,看后面大概是 3f e8 xx xx xx xx xx 48 85 c0 74 <- 这个74就是关键跳转
2(x86).找到定位码之后,看后面大概是 38 e8 xx xx 00 00 85 c0 74       <- 这个74就是关键跳转
★应该只匹配1处,有多处的话,请告诉我版本号。
3.修改74为EB后,替换内核shell32.dll,则打开对话框将自动更新。

PExlorer.exe(RC2.3)是内存修改,只对PExlorer.exe的进程有效,好处是不改内核,
通过配置文件修改指定关键跳转地址即可。启动的notpead.exe等程序的打开无效。
如果直接更新内核shell32.dll,所有打开对话框都会自动更新。


  1. "::文件管理器":
  2.   {
  3.     "注释":"默认为false,自己手动刷新影响也不大,需要的人自己确定关键地址后设置为true",
  4.     "shell32_hacker":false,
  5.     "shell32x64_hacker_addr":"0xC8017",
  6.     "shell32x86_hacker_addr":"0x19BA5F"
  7.   }
复制代码


0xC8017 为Win10版本(x64 shell32.dll 10.0.10586.0)的关键跳转地址
0x19BA5F 为Win10版本(x86 shell32.dll 10.0.10586.0)的关键跳转地址
shell32.dll的版本不一样的话,偏移值可能不同,请修改配置文件。

关键跳转地址搜索例:
_SCNGetWindow
shell32.dll(x64)
文件偏移地址
              48 8b 00 48 83 c4 20 5b c3 83 fb 01 74 <- x64 定位码
0xF2A40       01 74 3f e8 14 a3 f6 ff 48 85 c0 74 27 48 8d 15
                                                                         0xF2A4B

__SCNGetWindow@4:
shell32.dll(x86)
文件偏移地址
             8b 00 5e 8b e5 5d c3 83 fe 01 74 <- x86 定位码
0x19AB00     e5 5d c3 83 fe 01 74 38 e8 0a 02 00 00 85 c0 74
                                                                                             0x19AB0F

点评

32和64均测试有效,不知道有没有副作用,大师太给力了  详情 回复 发表于 2016-5-14 10:52
shell32.dll有数字签名,好像启动时会验证,以前改过内置图标启动就蓝屏了  详情 回复 发表于 2016-5-14 10:26
回复

使用道具 举报

18#
发表于 2016-5-14 11:18:40 | 显示全部楼层
ljycslg 发表于 2016-5-14 10:52
32和64均测试有效,不知道有没有副作用,大师太给力了

应该没有副作用,这样就跟没有wallpaperhost或者PExlorer打开对话框的处理逻辑是一样效果。
要是有explorer的话,是个公共的变更通知处理省点资源吧,目前是各自进程启动各自的处理线程,
但是问题不大,关闭对话框的时候会自动释放。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-5 07:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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