无忧启动论坛

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

[原创] 公布手工极限精简Windows的方法,所有版本通用

    [复制链接]
跳转到指定楼层
#
发表于 2016-4-5 18:31:46 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 hzican 于 2016-4-7 23:16 编辑

用了几年内存操作系统,一直偷懒,没有认真研究系统的精简,可是发现新的的操作系统体积庞大,又没有出现让人感兴趣的新功能,一直感叹主持微软操作系统开发的带头人一代不如一代!
想一直坚持用老的系统,可是因为商业规则的限制,老的系统,没有人提供新的硬件驱动开发,逼迫用户强行升级,无奈呀!也许以后,我会不得不使用Linux之类的可定制系统...

好了,闲话不说,看到论坛上面没有人公布精简Windows的方法,我来提供一个方法:
1. 跟踪系统启动引导过程,定制极致小的引导文件清单,这个简单.
2.跟踪使用功能,定制极致小的功能文件清单,这会是个很耗费时间的过程.


原理分析:
因为微软的操作系统是闭源的,所以没有办法通过源代码来分析系统引导流程,只能通过外部监视来反推,这就需要一个有力的监视软件来捕捉这个流程!
这里推荐一个工具: Process Monitor, 又是一个被有钱的微软收购的.
我们会使用到其中的 enable boot logging 功能,中文的意思就是"启用引导日志",我们看看截图:
不用选择监视线程,我们现在关注的是文件,直接ok启用该功能,Process Monitor会在系统注入一个文件名为 PROCMON23.SYS 的驱动文件,用来监视系统下次启动过程的内容。
这里要提示的是,在这个驱动加载之前的内容是监视不到的,所以,我后面会补充几个启动必须的文件.

精简步骤(我用VPC2007虚拟机安装三烦精简的239m的Win7,一个是VPC2007软件体积小,另外一个主要是虚拟硬盘格式为VHD文件,Win7可以直接挂载操作):
  • 虚拟机里面安装好系统,Process Monitor 设置好boot logging以后,重启系统。C:\Windows\System32\Drivers\PROCMON23.SYS 就会不停的监视系统,把日志写到
    C:\Windows\Procmon.pmb 日志文件里面,所以为了避免监视太多无关的内容,造成日志文件过大,进入系统,直接点击关机或重启,不要等待,也不要操作其他动作。
  • 因为 PROCMON23.SYS 关机前会自动删除自身,以及清理相关注册表内容,所以再次进入系统,就不会继续监视系统了,
    再次打开 Process Monitor 会提示保存日志文件为新的pml格式的日志文件,看看截图:
  • 关闭虚拟机,主机Win7挂载VHD文件,在主机里面运行 Process Monitor 打开虚拟机里保存的pml格式日志文件,默认配置会看不到Boot阶段的日志,要设置一下,看截图:
    为了生产精简的文件清单,我们还要设置过滤条件,过滤一些与精简文件目的无关的内容。过滤条件为:文件路径以 C:\Windows\ 开头, 排除和 Process Monitor相关的
    两个文件:C:\Windows\Procmon.pmb, C:\Windows\System32\Drivers\PROCMON23.SYS, 以及排除所有带 "*"的文件路径。继续看截图:
  • 保存文件列表清单,因为有很多重复的文件名,所以我们点击 count occurrences 菜单合并文件路径,看截图:
    Column:选择Path,再点Count合并计数,最后保存路径清单。
  • 上一步里保存的路径清单里面除了文件还包括目录,所以,我们要执行一个 cmd 命令排除这些目录,得到真正的Windows目录下面的文件清单。
    我们先假设刚才保存的路径清单文件名为: z:\paths.csv ,虚拟机的vhd硬盘文件挂载盘符为: E: ,生产新的文件列表清单文件名为: z:\files.txt ,具体cmd命令为:
    1. (for /f "usebackq skip=1 delims=," %I in ("z:\paths.csv") do @for /f "tokens=2 delims=:" %J in (%I) do @for /f %K in ("E:%J") do @if exist %K echo %~aK|findstr "^d" >nul||echo %J)>z:\files.txt
    复制代码

    *提示:如果是实体机操作,一个盘符 C: 的话,可以简单语法:(另外如果要保存到批处理文件里面执行,要把%变成两个%,即%%,我看有些朋友不太熟悉,提醒一下)
    1. (for /f "usebackq skip=1 delims=," %I in ("C:\paths.csv") do @if exist %I echo %~aI|findstr "^d" >nul||echo %pnxI)>C:\files.txt
    复制代码

    打开新的文件列表清单文件: z:\files.txt ,添加没有监视到的启动相关文件,以及最精简的用户文件:
    1. \windows\fonts\vgaoem.fon
    2. \windows\inf\errata.inf
    3. \windows\system32\c_936.nls
    4. \windows\system32\l_intl.nls
    5. \windows\system32\winload.exe
    6. \programdata\microsoft\user account pictures\user.bmp
    7. \users\administrator\ntuser.dat
    8. \users\administrator\appdata\local\microsoft\windows\usrclass.dat
    复制代码

  • 现在我们可以做试验了,看看效果如何,先把原系统的四个目录:Windows, Users, ProgramData, Program Files 剪切到新目录下,假设为: E:\0 , 执行新的 cmd 命令复制文件:
    1. for /f "usebackq delims=" %I in ("z:\files.txt") do @(echo f|xcopy "E:\0%I" "E:%I" /h) >nul
    复制代码

    看看截图:
    没有错误的话就可以卸载vhd虚拟硬盘文件,启动虚拟机了。



当然,前面制作的步骤,启动的是个最小化的Windows, 没有更多的图形操作功能  因为我们在虚拟机里操作的原因,除了模拟administratorm关机没有进行任何操作,所以监视的内容比较少,
大家可以多模拟一下,比如点击计算机图标等等其他操作,可以多监视一些文件!
最后祝大家精简的开心!
也希望大家总结,把每个功能模块需要的文件清单,提炼出来,最后形成一个个真正组件定制化的Windows系统!






补充内容:
1. 关于 Process Monitor 一打开就开始监视,并且要求确认过滤条件的现象,如果要避免的话,可以创建一个快捷方式, 然后加上参数:/noconnect /quiet,看截图:


2. 关于启用“boot loggong”,  "C:\Windows\System32\Drivers\PROCMON23.SYS"写入失败的原因,我分析了一下原因,是因为直接打开Process Monitor, 默认就开始监视系统,所以会自动先写入这个驱动,再次写入的时候,因为这个驱动已经在使用中就覆盖不了,这样就造成了这样的现象,如果像补充内容1那样建立一个快捷方式不默认直接监视的话,是不会有这样的情况发生的,这个应该是它的一个Bug吧,Process Monitor应该判断,如果已经写入驱动,就不要再次写入了,只要修改注册表,让这个驱动下次系统启动的开始监控就可以了,正是没想到高手也有这样低级的bug产生,因为我的习惯一直是我不想用的东西,你就不要给我默认开启,所以一直以来都是用快捷方式打开的,还正是没有发现这样的bug存在,处理方法很多,简单点,直接补充注册表内容,帮ProcessMonitor完成这一步;或者驱动文件不能覆盖或者删除的情况下,是可以改名的,再写入就不会报错了,不过下次启动后不要忘了删除僵尸文件;另外重启系统,用快捷方式打开再启用Boot logging功能也是可以的。
想补充注册表的看这里:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PROCMON23]
  3. "Group"="FSFilter Activity Monitor"
  4. "SupportedFeatures"=dword:00000003
  5. "Start"=dword:00000000
  6. "Type"=dword:00000001
  7. "ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  8.   72,00,69,00,76,00,65,00,72,00,73,00,5c,00,50,00,52,00,4f,00,43,00,4d,00,4f,\
  9.   00,4e,00,32,00,33,00,2e,00,53,00,59,00,53,00,00,00

  10. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PROCMON23\Instances]
  11. "DefaultInstance"="Process Monitor 23 Instance"

  12. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PROCMON23\Instances\Process Monitor 23 Instance]
  13. "Altitude"="385200"
  14. "Flags"=dword:00000000
复制代码

点评

楼主 你是否有 依懒性 检测工具?那个对于做超精简的绿色软件很有帮助的,有时间一起研究下。http://blog.csdn.net/menghuanruanjian  发表于 2016-6-8 16:43
对于无法加载驱动的如WIN10可进安全模式开启监控,其他同楼主的  发表于 2016-4-7 16:31
hhy
[size=7]你漏掉了注册表监控,这也要精简的。不过, 这样的系统做出来,需要大量的时间精力测试。[/size]  发表于 2016-4-7 13:29
这个不支持WIN10吧? 在WIN10上驱动写入不了  发表于 2016-4-6 15:11

评分

参与人数 15无忧币 +61 收起 理由
a2013025 + 1 赞一个!
palm777qqq + 5
maomihuacha + 1
fxq + 5 很给力!
plutoshen + 5 很给力!
879792799 + 5 很给力!
tapy -1 所想所得有差距,先试试能不能做出来,再发.
renshijian + 5 很给力!
dafs + 5 很给力!
frg521 + 5 评分理由是:复制文件的批处理,感谢,观众们,.
hhy + 5 很给力!
易广白 + 5 很给力!
3ax31a + 5 很给力!
wjzgl001 + 5 很给力!
20090101 + 5 赞一个!

查看全部评分

98#
发表于 2024-7-20 10:01:38 | 只看该作者
感谢分享,已收藏
回复

使用道具 举报

97#
发表于 2024-7-20 09:21:32 | 只看该作者
先收藏,有时间细看。
回复

使用道具 举报

96#
发表于 2024-7-20 08:01:03 | 只看该作者
谢谢分享
回复

使用道具 举报

95#
发表于 2024-7-20 08:00:14 | 只看该作者
多谢楼主分享
回复

使用道具 举报

94#
发表于 2023-11-20 14:24:58 | 只看该作者

进来认真学习一下
回复

使用道具 举报

93#
发表于 2022-12-1 09:32:40 | 只看该作者
        赞一个!
回复

使用道具 举报

92#
发表于 2022-12-1 08:18:00 | 只看该作者
技术贴寥寥无几的回帖
回复

使用道具 举报

91#
发表于 2022-12-1 01:02:05 | 只看该作者
不论怎么样,还是谢谢楼主分享的
回复

使用道具 举报

90#
发表于 2022-11-29 17:32:43 | 只看该作者
精彩呈现
回复

使用道具 举报

89#
发表于 2022-11-29 17:23:11 | 只看该作者
感谢楼主提供方法
回复

使用道具 举报

88#
发表于 2020-12-23 17:32:04 | 只看该作者
谢谢楼主,学习了。
回复

使用道具 举报

87#
发表于 2020-12-22 21:28:06 | 只看该作者
谢谢大神的分享
回复

使用道具 举报

86#
发表于 2020-11-24 08:48:34 | 只看该作者
确实比较耗时,需要精心研究啊
回复

使用道具 举报

85#
发表于 2020-11-24 00:08:58 | 只看该作者
收藏
回复

使用道具 举报

84#
发表于 2020-3-6 22:21:10 | 只看该作者
sairen139 发表于 2020-3-6 19:52
请问你是用win7系统还是win10系统来完成精简的?

我是Win7系统,用的很不错
回复

使用道具 举报

83#
发表于 2020-3-6 19:52:37 | 只看该作者
nc4485 发表于 2020-3-6 19:26
今天有空,试了一下,非常完美,就是麻烦点,是要把所有要用的地方最好点一下,不然功能会有缺失

请问你是用win7系统还是win10系统来完成精简的?
回复

使用道具 举报

82#
发表于 2020-3-6 19:26:26 | 只看该作者
今天有空,试了一下,非常完美,就是麻烦点,是要把所有要用的地方最好点一下,不然功能会有缺失

点评

请问你是用win7系统还是win10系统来完成精简的?  详情 回复 发表于 2020-3-6 19:52
回复

使用道具 举报

81#
发表于 2020-3-4 13:14:28 | 只看该作者
#过滤.PS1
#当前盘符过滤  $env:SystemDrive
$tempfile="boot.csv"
Import-Csv $tempfile -Delimiter "," | Select "Extension" | Export-Csv WmiData.csv -Delimiter "," -Encoding UTF8 -notypeinfo
$line=Get-Content  -Path .\WmiData.csv
$line=$line.Replace('"',"")
$line| set-content WmiData.csv

Start-Sleep -Milliseconds 200
$去重=Get-Content "WmiData.csv"

#$去重=$去重 -replace(".$","")
#$去重=$去重 -replace("^.","")
$去重=$去重| Select-String -Pattern "[.]"
$去重=$去重| Select-String -Pattern "$env:SystemDrive\\"
$去重=$去重| Select-String -Pattern ("^.:\\Program Files\\Common Files","^.:\\Program Files (x86)\\Common Files","^.:\\Program Files (x86)\\Windows Photo Viewer","^.:\\Program Files\\Windows Photo Viewer","^.:\\W")#正则包括列表
#正则排除列表
$去重=$去重| Select-String -Pattern ("\*","^.:\\Windows\\TEMP","^.:\\Windows\\Prefetch","^.:\\Windows\\System32\\config","^.:\\Windows\\assembly","^.:\\Windows\\WinSxS","^.:\\Windows\\Installer","^.:\\Windows\\System32\\DRIVERSTORE","^.:\\Windows\\SysWOW64\\zh-CN","^.:\\Windows\\System32\\zh-CN","^.:\\Windows\\SOFTWAREDISTRIBUTION","\\Microsoft.NET","\\CSC\\","\\SystemApps\\","\\Logs\\","\\LogFiles\\") -NotMatch
#$去重=$去重| Select-String -Pattern (Get-Content .\Include.ini)#正则包括列表
#$去重=$去重| Select-String -Pattern (Get-Content .\Exclude.ini) -NotMatch #正则排除列表
$去重 | Set-Content "处理完成.txt"  -encoding utf8
CMD /C "del WmiData.csv"
回复

使用道具 举报

80#
发表于 2020-2-19 21:28:48 | 只看该作者
好的技术文章,不过要花大量的精力
回复

使用道具 举报

79#
发表于 2019-9-22 08:44:54 | 只看该作者
sairen139 发表于 2019-9-21 22:26
经典的手工极限精简系统的方法,我按照你的教程制作出了超级小的精简系统!非常感谢!

求成品
回复

使用道具 举报

78#
发表于 2019-9-21 22:26:12 | 只看该作者
经典的手工极限精简系统的方法,我按照你的教程制作出了超级小的精简系统!非常感谢!

点评

求成品  详情 回复 发表于 2019-9-22 08:44
回复

使用道具 举报

77#
发表于 2019-9-17 16:25:49 | 只看该作者
热心回复:):):)
回复

使用道具 举报

76#
发表于 2019-9-17 16:25:44 | 只看该作者
這個技巧, 配合正式版的授權證書, 正好可以用來破解預覽版的時間炸彈.
回复

使用道具 举报

75#
发表于 2019-9-17 16:08:42 | 只看该作者
关于【[原创]公布手工极限精简Windows的方法,所有版本通用】提取系统盘C盘的Files.txt文件列表的修正
昨天我安装hzican的手工精简系统帖子【[原创]公布手工极限精简Windows的方法,所有版本通用】的方法进行手工精简LTSB2016的64位系统,因为是直接在实体电脑系统C盘操作到最后第二步需要转化C盘里paths.csv文件提取出系统盘的files.txt文件时,发现hzican提供的命令行窗口里的语句有误,正确的提取系统盘的最少精简文件成files.txt的语句如下:
(for /f "usebackq skip=1 delims=," %I in ("C:\paths.csv") do @if exist %I echo %~aI|findstr "^d" >nul||echo %~pnxI)>C:\files.txt



上面这个语句(这个语句的作用是逐行抓取c根目录下paths.csv里的包括盘符的完整路径对照系统盘结构如果正则表达式发现有目录即findstr "^d"则删除此行,然后汇总输出保留下来的纯文件的除去盘符以外的路径文件名后缀名为file.txt列表文本文件)可以直接拷贝然后WIN➕R打开运行,输入cmd打开黑色的命令符窗口粘贴进去回车就能得到系统盘的极限精简的最少必要文件列表files.txt了!


E4C3DF84-FC77-4858-9593-1FDE3DA2C8FE.jpeg (1004.06 KB, 下载次数: 174)

E4C3DF84-FC77-4858-9593-1FDE3DA2C8FE.jpeg
回复

使用道具 举报

74#
发表于 2019-1-19 14:12:53 | 只看该作者
黑中见白 发表于 2018-6-16 01:44
无盘天使有个驱动可以监控文件使用
wdmon64.sys
缺点是不能按照指定进程监控

现在用火绒剑  可以做到
回复

使用道具 举报

73#
发表于 2018-11-24 16:46:39 | 只看该作者
我只想说,神操作呀,这简直就是上帝之手呀!!!
回复

使用道具 举报

72#
发表于 2018-11-24 16:13:18 | 只看该作者
监测 安全模式 的系统会不会更好更精简呢?!
回复

使用道具 举报

71#
发表于 2018-11-24 15:43:12 | 只看该作者
敢问高手大大:

小白的理解:这个语句的目的是按照列表文件复制文件,源目录是E:\0,目标目录是E:\

不知是否正确,有个想法就是想把目标目录改为E:\2,那么该语句改如何修改?恳请赐教,多谢~

  1. for /f "usebackq delims=" %I in ("z:\files.txt") do @(echo f|xcopy "E:\0%I" "E:%I" /h) >nul
复制代码


通过网页爬文,搜到部分按列表复制的一些案例,但是不够仔细,始终参不透玄机,还是回来请高手解答一下。

如果本文中另外几个批处理能详解一下其中要义,自然是最好了,期待楼主回复。
回复

使用道具 举报

70#
发表于 2018-11-4 11:31:21 来自手机 | 只看该作者
请问win10启动必须得文件列表有嘛?现在新电脑只能装win10了!多谢多谢
回复

使用道具 举报

69#
发表于 2018-10-16 10:30:04 | 只看该作者
我看看!!!  
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-31 14:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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