如何制作自己的Windows Service

作为一个Windows 系统的管理员,安装安全HotFix应该是不会陌生的,每次我们在装完一台机器后总是下载无数补丁,但烦人的是每每安装一个HotFix系统都会Reboot一次,当然,在Reboot前我们不点击"确定"按钮,直接安装完其他的补丁后一次Reboot也未尝不可,但是这样似乎显得有点不大专业,今天我教大家作一个自己的Service Pack,可以把你需要安装的补丁在一次安装完毕,好像很Cool哦~
为了测试,我选择了一台中文版Windows 2000 Server,而我们需要安装的安全补丁为2个(当然不止这些,打个比方而已),一个是Windows 2000的输入法漏洞的补丁(Q270676),一个是命名管道的补丁(Q269523) 。
跟着我一起来作吧:
1、下载我们需要安装的HotFixs,http://download.microsoft.com/download/win2000platform/Patch/Q269523/NT5/CN/Q269523_W2K_SP2_x86_CN.EXE和http://download.microsoft.com/download/win2000platform/Patch/q270676/NT5/CN/Q270676_W2K_SP2_x86_CN.EXE 。
2、切换到CMD模式,在C盘创建一个hotfix的目录,然后执行
Q269523_W2K_SP2_x86_CN.EXE /x(建议解包的顺序按Q号的大小排列,由小到大,理由我会在后面提到)
看到要求输入解包路径的提示后输入"C:Hotfix" 。
C:>cd hotfix
C:hotfix>dir
驱动器 C 中的卷是 C
卷的序列号是 AC58-F7F5
C:hotfix 的目录
2001-05-04; 04:00;;;;2001-05-04; 04:00;;;;2000-08-14; 18:57;;;;98,064 hotfix.exe
2000-08-14; 18:57;;;;15,139 hotfix.inf
2000-08-14; 17:19;;;835,856 kernel32.dll
2000-08-14; 17:19;;;;85,776 services.exe
2000-08-14; 18:31;;;;88,245 sp2.cat
2000-08-14; 18:57;;;;;3,584 spmsg.dll
2001-05-04; 04:00;;;;2001-05-04; 04:00;;;; 然后我们将hotfix.inf文件复制一份 。
C:hotfix>copy hotfix.inf q269523_cn.inf
已复制 1 个文件 。
紧接着我们将第二个HotFix解包,
Q270676_W2K_SP2_x86_CN.EXE /x
看到要求输入解包路径的提示后输入"C:Hotfix" 。
也将此时的hotfix.inf文件复制一份 。
C:hotfix>copy hotfix.inf q270676_cn.inf
已复制 1 个文件 。
第三个、第四个........重复同样的操作 。
3、此时我们已经将HotFix的文件都解包至C:Hotfix目录,并且有了各个HotFix的inf文件的拷贝,我们现在来分析这些inf文件,一般我们把最后解包的inf文件作为模板,因为inf文件分很多字段,从我观察的结果来看,随着时间的推移,inf文件的字段可能会增加,这也就是我们开始解包按Q大小顺序的原因,本例中我们以Q270676的inf文件为模板,我们编辑hotfix.inf文件,这个文件已经包含了Q270676的信息,我们只要把Q269523中的信息添加到该文件中即可,下面我们来分析Q269523的inf文件的内容:
前面的大部分基本都是相似的,我们只搜寻一些与众不同的字段 。
[MustReplace.System32.files]
SERVICES.EXE
[CopyAlways.DriverCab.files]
kernel32.dll
[Cache.files]
SERVICES.EXE
KERNEL32.DLL
[Uniprocessor.Kernel.files]
KERNEL32.DLL,UNIPROCKERNEL32.DLL
[Multiprocessor.Kernel.files]
KERNEL32.DLL
[SourceDisksFiles]
SERVICES.EXE=1
UNIPROCKERNEL32.DLL
KERNEL32.DLL=1
然后我们在hotfix.inf文件中搜寻MustReplace.System32.files,然后加入一行
SERVICES.EXE
为了以后方便,我们一般加上一些注释,编辑后的hotfix.inf文件的MustReplace.System32.files字段就成了下面这个样子:
[MustReplace.System32.files]
Q269523; Added by Adam
SERVICES.EXE
接着搜寻CopyAlways.DriverCab.files、Cache.files、Uniprocessor.Kernel.files、Multiprocessor.Kernel.files、SourceDisksFiles,并将相应的信息添加到hotfix.inf文件中,也要注意添加必要的注释文件,inf文件中表示注释的符号为分号 。当然,我们也建议您把本身的模板文件中必要的项也作一下注释,如2个hotfix都包含的Cache.files,我们修改后就成了:

推荐阅读