系统服务尽在掌握
董师傅茶坊
读者VS董师傅
张渝:我的系统是Windows XP,近日对系统服务进行优化,可是优化后我发现原来安装的诺基亚PC套件无法使用了。请问董师傅,如果优化服务导致故障该如何判断和解决呢? 董师傅:系统服务是Windows的关键进程,对于服务的更改可能会导致系统出现不可预料的故障。为了让大家更方便了解系统服务前后变化,下面介绍监测服务的方法。
服务变化一比便知
通过Windows XP(简称XP)和Windows Vista(简称Vista)的服务管理组件都可以将当前服务状态导出为TXT文件,因此我们只要比对优化前后的文件即可找出变化的服务,比对操作借助系统自带的FC命令即可。下面以读者提到的诺基亚PC套件故障为例介绍具体的操作方法。故障的原因是由于用户把其生成的服务关闭所致。
第一步:发现故障后,单击“开始→运行”,输入“services.msc”打开系统服务管理窗口。单击“操作→导出列表”,把当前服务状态导出到k:\aa.txt(保存类型选择文本文件)。
第二步:打开控制面板的“添加/删除程序”,按提示将PC套件删除并重启。接着重新安装PC套件,此时PC套件可以使用。重复第一步,继续把正常状态的服务导出为k:\bb.txt。
第三步:启动命令提示符,输入“fc /w k:\aa.txt k:\bb.txt”(/W表示为了比较而压缩空白和空格)。现在立刻就可以看到前后服务状态不同,故障状态aa.txt中的ServiceLayer服务被设置为“已禁用”,正常状态则为自动(图1)。

第四步:ServiceLayer服务和PC套件有什么关系?同上,再次打开服务管理窗口,双击打开ServiceLayer服务,从属性窗口的可执行文件的路径可以看到:该程序是“C:\Program Files\PC Connectivity Solution\ServiceLayer.exe”,正是PC套件安装目录下的应用程序(图2)。因此,可以判断出故障的原因是由于该读者将ServiceLayer设置为“已禁用”所造成,如果以后再碰到类似故障,我们只要重新将服务设置为自动即可。

注意:上面例子中我们是通过比对故障出现前后服务设置变化找出故障,为了更好保护系统,平时我们应该在系统正常的时候导出服务列表,这样优化后如果发现故障,通过FC比对就能很容易找出故障的原因。
董师傅提示:一劳永逸解决优化故障
默认情况下,系统默认开启的服务是适合大部分人的安全使用。如果自己对系统服务进行优化,常常会导致各种故障的产生。为了解决由于服务错误优化导致的故障,对于XP用户,可以使用SC命令建立一个恢复默认服务的批处理(下载地址:http://www.cpcw.com/bzsoft/)。这样一旦发现优化故障后,运行这个批处理即可恢复默认设置。对于Vista用户,系统新增几个服务,大家可以打开批处理,将Vista新增的服务按照SC命令格式添加上去。比如,原来是自动启动服务按“sc config 服务名称 start= AUTO”添加到批处理尾部即可(start=后有一个空格)。
服务增加一目了然
上述例子中涉及的是系统正常的服务,为了更好保护自己,现在一些病毒也经常伪装为系统服务。由于服务都是在后台运行,此类病毒的查杀给我们带来了麻烦。由于FC命令只是全面比对前后服务状态,如果系统或软件升级导致服务描述更改(但是服务本质没变),FC仍然会认为服务发生变化。如果要更精准监测服务变化,我们可以借助常用的办公软件Excel,它可以比FC更直观地找到新增的服务。
第一步:在系统正常的时候导出服务列表为zc1.txt。如果现在怀疑自己系统增加了不明的系统服务,继续把当前服务导出为zc2.txt。
第二步:启动Excel打开zc1.txt,文本导入向导选择“分隔符号”,然后单击“完成”。这样即可在Excel中按服务管理器中的格式打开文件。由于Windows Time服务描述比较长,这里需要将“已启动自动本地系统”复制到对应的表格中,现在通过Excel序号可以知道正常状态系统有92个服务。同上,打开zc2.txt,通过序号就可以发现系统服务已经增加到93个(服务增加一个)。
第三步:现在把zc2.txt的文字格式设置为红色,然后将全部内容复制到zc1.txt的尾部,单击Excel菜单栏的“数据→排序→确定”,这样前后相同服务会以黑、红交错排列。对于新增的服务则会出现连续的2个红色显示,因为后面新增的服务没有正常状态下的黑色字体服务对应。连续红色处有Background Intelligent Transfer Service和Backdoor服务,从上面排列规律可以知道Backdoor就是新增的服务(图3)。

第四步:知道具体新增服务后,同上打开服务管理组件查找,可以发现服务可执行路径是c:\windows\system32\backdoor.exe。现在重启系统进入安全模式删除该文件,对于服务项目删除需要进入注册表删除对应的键值。进入注册表编辑器依次展开[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services],其中的[backdoor]项就是新增的服务键值,按提示把该键值删除,重启后就可以彻底删除文件及其添加的服务键值。
董师傅提示:
1.系统服务主要存在于注册表以下几个项目,我们可以依次展开下述键值查找具体服务并删除之,服务键值中的ImagePath数值表示服务可执行文件的路径。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services
2.有些服务的显示名称和服务名称是不一样的。比如appmgmt(服务名称)对应的显示名称为Application Management。在注册表编辑器中显示的是服务名称,键值中的DisplayName数值表示服务显示名称(SC命令使用的就是服务名称),在服务管理组件中则用显示名称表示,大家要注意区分!