Windows XP系统服务配置攻略

对于经常重装系统的朋友来说,出于优化系统、减少内存占用亦或增强系统安全性能,往往都会修改很多系统服务的启动类型。将大量无用或者危险的服务关闭,参照许多服务优化的文章来看,大多需要禁用并停止20-30个服务将是一项比较烦琐的工作,我也是深受其害。然而从Windows XP开始,其自带的DOS工具中加入了一个sc.exe(Service Control)的文件,刚好可以对服务的启动类型以及服务的启动或者关闭等进行进行操作,再利用DOS的批处理优势,就可以把上面提到的种种操作进行大幅简化。

sc.exe常用功能列表:

1.更改服务的启动状态(这是比较有用的一个功能)
2.删除服务(除非对自己电脑的软、硬件所需的服务比较清楚,否则不建议删除任何系统服务,特别是基础服务)
3.停止或启动服务(功能上类似于net stop/start,但速度更快且能停止的服务更多)

具体的命令格式如下:

修改服务启动类型的命令行格式为(特别注意start=后面有一个空格)
sc config 服务名称 start= demand(设置服务为手动启动)
sc config 服务名称 start= disabled(设置服务为禁用)

停止/启动服务的命令行格式为
sc stop/start 服务名称

注意:平时常接触的都是服务的显示名称,而以上所指是服务名称,都可以在控制面板->管理工具->服务里面,双击对应的服务来查询。

先举例说明一下具体的设置方法:

如设置远程注册表服务为手动其格式为
sc config RemoteRegistry start= demand
设为禁用的格式为:
sc config RemoteRegistry start= disabled
停止服务则格式为:
sc stop RemoteRegistry

首先把自己所需设置的服务名称查到之后,按照上面的格式做成批处理文件,重装系统之后只要运行批处理文件即可。

以下是我的设置,以XPSp2为蓝本,可比对所用的系统进行增删和修改。注:未加入XPSP2的自动更新、安全中心、防火墙。

sc config Alerter start= demand
sc config TrkWks start= demand
sc config helpsvc start= demand
sc config PolicyAgent start= demand
sc config dmserver start= demand
sc config WmdmPmSn start= demand
sc config Spooler start= demand
sc config RemoteRegistry start= demand
sc config NtmsSvc start= demand
sc config seclogon start= demand
sc config Schedule start= demand
sc config WebClient start= demand
sc config W32Time start= demand
sc config WZCSVC start= demand
sc config ERSvc start= demand
sc config Themes start= demand
sc config FastUserSwitchingCompatibility start= disabled
sc config Messenger start= disabled
sc config ProtectedStorage start= disabled
sc config SSDPSRV start= disabled
sc config TermService start= disabled
sc config ShellHWDetection start= disabled

如果需要立即关闭服务也可把以下代码跟在上面的代码之后

sc stop W32Time
sc stop ShellHWDetection
sc stop TrkWks
sc stop helpsvc
sc stop dmserver
sc stop PolicyAgent
sc stop Spooler
sc stop RemoteRegistry
sc stop seclogon
sc stop Schedule
sc stop WZCSVC
sc stop ERSvc
sc stop Themes
sc stop FastUserSwitchingCompatibility
sc stop ProtectedStorage
sc stop SSDPSRV
sc stop WebClient

最后把修改好之后的代码存为services.cmd,在以后进行服务设置时,直接运行事先保存好的批处理文件就可以做到事半功倍了。

看到这里,使用Win2000的朋友也不必失望,sc.exe这个命令行工具对Win2000同样适用,可从装有WinXP或者Win2003的机器里面拷贝sc.exe文件,与保存好的批处理文件放在一起,然后执行批处理文件即可。

对注册表比较熟悉的朋友可能会想到用注册表来设置服务的启动类型,这也是一种可行的方法,本身却有着内在不足。原因是服务启动类型在注册表中对应的键值较长且分散,进行整理不方便直观且易错漏,所以这种方法比较适用于无人值守的安装时使用。

下面是我对服务进行设置时遇到的问题和技巧,仅供参考。

1.对于系统服务而言,既然存在就有它存在的意义。所以在开始之前最好先了解一下机器使用的软件和硬件所必须的系统服务,再进行后续操作。比如说办公一族经常使用打印机,那么打印机安装、运行必备服务的延迟打印服务(Spooler)就不能改动其启动类型或者将其停止。喜欢XP视觉样式的朋友,主题服务(Themes)也是不能去改动的……由于系统服务众多,这里就逐一列出了,可以参看大众软件2004年18、19期GZ写的《用我所用弃我所弃——WindowsXp服务详解》(针对XPSP1,但由于SP2的服务并无太大的改动,所以有着很强的参考价值)再加上平时的积累,相信一定能把你的服务设置好。

2.基础服务尽量不要去改动(主要指在服务属性里依存关系中显示“如果此服务失败,计算机将重启动,此服务不支持恢复操作”这类的服务,注意RPC服务也属于基础服务)。一方面是因为它们是底层的服务,另一方面是相当多的服务都依存于这些基础服务。

3。有的服务只能设置其启动类型,而不能通过sc stop来使之停止,所以两段代码所包含的服务不太相同。比如说TermService(终端服务)。将之设为禁用之后,重启一次后即变为停止了。

4.不能忽视服务间存在的依存关系,如果关闭了一个服务的父依存服务,那么这个服务和他的子依存服务也将不再起作用,最简单的例子是IIS服务依存于ProtectedStorage服务,如果该服务被改为手动特别是禁止之后,则IIS服务和依存于IIS的相关服务就相应的被禁用了。还有一些服务未标明依存关系,但是却缺一不可,比如说自动更新以及V5版的WindowsUpdate事实上不当依存于自动更新服务(wuauserv),还依存于智能后台传输服务(BITS)。所以把BITS服务禁用之后,WindowsUpdate也将出错。

板主回复:
发表关于电脑的文章或软体
得到加分

good post.
thank you…