对于经常重装系统的朋友来说,出于优化系统、减少内存占用亦或增强系统安全性能,往往都会修改很多系统服务的启动类型。将大量无用或者危险的服务关闭,参照许多服务优化的文章来看,大多需要禁用并停止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也将出错。
以下是原先在XPSP1时总结的一些服务调整注意事项,现在对SP2进行补充,希望对各位能有所帮助。(写的比较早了,给出的多数是显示名称,服务名称自己查一下)
Cryptographic Services
提供三种管理服务: 编录数据库服务,它确定 Windows 文件的签字; 受保护的根服务,它从此计算机添加和删除受信根证书机构的证书;和密钥(Key)服务,它帮助注册此计算机获取证书。
最主要的体现是在安装驱动程序、DirectX等凡是需要验证数字签名时都必须开启这个东东。如果不开启将会导致这些程序不能正常安全的安装。但还可考虑系统属性中的硬件标签里的驱动程序签名里进行修改以使之失效,平时不进行驱动以及DirectX安装的时候,才可禁用,需要时再行开启。
其实在升级SP或者Hotfix的时候,升级文件里面同样有数字签名,所以Cryptographic Services要开启
Terminal Services
允许多位用户连接并控制一台机器,并且在远程计算机上显示桌面和应用程序。这是远程桌面(包括管理员的远程桌面)、快速用户转换、远程协助和终端服务器的基础结构。
这里需要说明一个问题,我们平时只要没有以上的应用就可以把它禁用,最明显的体现就是进入XP的速度可以大大加快(关于这点可以用全新安装的XP来实验)。比较明显的体现就在开启动界面的滚动条滚动次数大大减少(黑屏的时间不会变化,不会像有的同学说的滚动时间少了,黑屏时间长了)。
比较有意思的是这个服务一旦禁用的话,在任务管理器的用户栏里面将不会再显示用户名。其实我觉得无关紧要。
Protected Storage
提供对敏感数据(如私钥)的保护性存储,以便防止未授权的服务,过程或用户对其的非法访问。
这个服务也是说明不够具体,一般认为与密码记录有关。比较常见但于现在很多路由器的登录验证以及网页中各种输入密码的表单或窗口,设置为自动或者禁用都可以,千万不能设置为手动,否则就会出现不能登录路由器或者无法输入网页中的密码(具体表现就是出现了找到页面就是不弹出密码输入框,导致不能正常登录。只是普通网页登录的话主要是无法将光标定位于密码输入框中。)
相类似的表现也存在于Win2000下设该服务为手动后安装IE6Sp1,在重启后的升级过程中,进行系统服务安装时会相当缓慢(我的机器是赛扬4 1.8G可以用掉超过十分钟时间去等待安装完成)
但是先将此服务禁用之后再行安装IIS的朋友就会发现IIS不能正常开启,因为这个服务是IIS的依赖服务,如果要用IIS的话,这个服务就只能设为自动,而不能将它禁用了。
如果不使用IIS、而且对密码输入不太多的使用者可以将此服务关闭以提高安全性。
Remote Access Connection Manager
创建网络连接。
在GZ的文章和微软的描述中都说这个服务是创建网络连接,依赖于Telephony这个服务,而GZ在论及Telephony时又提到只有不使用与拔号相关的服务时就可将之关闭,那么用局域网或路由器上网的又应该如何设置呢?有待验证!
Windows Installer
这个服务的进程名是msiexec.exe,如果使用到微软Windows Installer制作的MSI文件的安装就会开启这个服务,GZ提到这个服务是手动启动,同时也必然是关闭着的,只有在使用的时候才会自行开启,而不是说这个服务就不工作了。现在很多软件都用的是这种安装文件格式,比如说ACDSee,VMWare,暴风影音、金山系列的部分软件等都在使用,它们的扩展名都是.exe的,只是安装过程中先解压为.msi再进行安装,实际直接使用.msi为扩展名发布的软件不多。所以最好不要去禁用,而让系统自行控制。但有时也会出现问题。比如说有时安装完软件后可以发现任务管理器的进程列表中有msiexec.exe的存在,但是不能用任务管理器将其中止,一般可以考虑重启或者直接到服务中将其停止即可。
Portable Media Serial Number
Retrieves the serial number of any portable music player connected to your computer
这个服务不是太有用,但是将其关闭比较不方便,很容易,所以我认为可以将之设成禁用,而不必要将它停止,下次系统启动时会自行关闭这个服务,Terminal Services服务与之相似,直接将之禁用即可。
Shell Hardware Detection(ShellHWDetection)
为自动播放硬件事件提供通知
这个服务在SP1的里面,启动类型为自动,而状态也是启动。当时由于没有太多的资料,也没有描述可以参考,所以一直以为是与某些硬件的检测有关,而到了 SP2之后,有了具体的描述。可以肯定这既不是硬件的检测程序,也不是我们平时使用的自动播放功能,故完全可以禁用之,因为这个服务支持的硬件到现在我也没见过。但是在nlite前期版本中,发现这个服务开始是在服务的移除范围之例,后来却被移到实验项目里边去了,可见其与某些硬件存在着依赖关系。所以如果发现自己的外设,如数码相机或者某些随身听(不是指一般的MP3)出现问题的话,将此服务保持原状态。
Event Log(EventLog)
启用在事件查看器查看基于 Windows 的程序和组件颁发的事件日志消息。无法终止此服务。
由描述上看,再加上XP本身面向服务器的特性,可见这个服务是提供系统安全分析基础服务。但nlite里这个服务开始做为试验服务,后来又转为用红字注明的可移除服务。因为个人用户对安全性要求不高,所以很多nlite用户直接把这个服务给移掉了。出于两方面考虑,一是这个服务不要在系统安装之后用改注册表或者用命令行的方式移除,二是用nlite制作的时候去掉此服务,然后安装系统后未发现系统有相当长时间的启动延迟,就说明这个服务移除是安全的。做为试验的时候来移除此服务后,系统启动时间相当长,后来nlite的作者根据反映做了特定修改之后,这个服务的移除才变得安全。
综上,对此服务进行移除的情况,只适合于使用nlite进行系统安装从不看日志且移除后无启动延迟的。
Logical Disk Manager
监测和监视新硬盘驱动器并向逻辑磁盘管理器管理服务发送卷的信息以便配置。如果此服务被终止,动态磁盘状态和配置信息会过时。如果此服务被禁用,任何依赖它的服务将无法启动。
这个服务平时设为手动即可,当使用到“管理工具-计算机管理-磁盘管理”时会自行启动,以使我们能对系统中的各个分区或者盘符进行管理,而在平时又可以不占用系统资源。但有时在安装虚拟光驱或者首次插入一个U盘时,经常会出现设备驱动加载正常,而在我的电脑里边看不到盘符的情况(经过试验在命令提示符下确实能打得开新的盘符)。遇到这个情况,不妨到“磁盘管理”属性页面里去手动设置一下盘符即可(有时可能还要重启一下)。
最后再补充一点,现在很多路由设备开始支持UPnP,而XP的ICS/ICF则自带UPnP的支持,很多BT下载工具现在已经开始支持这一协议,来进行自动端口映像,所以如果采用以上路由器以及Internet共享连接(相关软件没有进行尝试,比如WinRoute)上网的朋友,建议不要去更改SSDP Discovery Service以及Universal Plug and Play Device Host这两个与UPnP密切相关的服务。还有几个服务在XPSP1里是默认开启的,但是到了SP2里面却变为禁用的服务,或者在2000里没有,而XP 里新增的服务就要相当注意,这里可能存在在很大的优化的可能。毕竟架构相同,多出来的服务或许是可以关闭用以加快速度的,而那些SP2里面改变了启动类型的服务或许是用于提高安全性吧。比较典型的就是Browser(Computer Browser)这个服务GZ给的说明是与网络计算机浏览有关,但是如果注意的话就会发现在2000和XPSP1时这个服务的默认启动类型是自动,状态是启动,到了SP2之后,该服务的启动类型不变,但是状态是空,此时仍可浏览网上邻居,所以可以尝试着在XPSP1里面将之关闭看能否浏览网上邻居,如果可行的话,直接关闭就行了。特别注意XPSP2里增加了一个DComLaunch(DCOM Server Process Launcher)的服务,该服务与AppMgmt(Application Management)、MSIServer(Windows Installer)一起构成InstallShield安装程序的必需服务,也请不要更改这三个服务的默认启动类型。
这篇文章适合于对服务及系统操作比较熟练的用户实践。初级用户可使用专门的服务修改软件(如系统服务终结者)来进行设置。