[已解决]请大家帮忙修改完善精简下“XP系统服务优化”的代码
本帖最后由 jackass110 于 2010-5-6 18:46 编辑看了论坛几位前辈的优化代码,感觉对与优化似乎不是太完善,比如,安装了暴风或者显卡之后生成的服务并没有操作到,
于是自己参考前辈们的思路,自己写了个,
思路是,获取本机的服务列表到数组,然后给定自动及手动的服务项到数组并分别设置启动类型,然后通过数组比较,得到本机除了给定的服务之外的所有服务并设置为禁用,
因为自己是新手,代码是东拼西凑得来的,请大家帮忙找下错误并优化精简下代码,,,,(不考虑具体优化的服务问题,只考虑代码的工作过程,)
不胜感激。。。#include <ServiceControl.au3>
#include <Array.au3>
$servlist = _ServListInstalled()
$Auto_list = _ArrayCreate("AudioSrv", "CryptSvc", "DcomLaunch", "dmserver", "Dnscache", "Eventlog", "lanmanworkstation", "Netman", "PlugPlay", "PolicyAgent", "ProtectedStorage", "RpcSs", "stisvc", "winmgmt")
$Demand_list = _ArrayCreate("MSIServer", "dmadmin")
;设置自动启动的服务...
For $i In $Auto_list
If _ServiceExists(@ComputerName, $i) = 1 Then
_SerSetState($i, 1)
_ServStart($i)
EndIf
Next
;设置手动启动的服务...
For $i In $Demand_list
If _ServiceExists(@ComputerName, $i) = 1 Then
_SerSetState($i, 2)
_ServStop($i)
EndIf
Next
;处理其他服务
;获取本机服务列表,并删除自动,手动的服务...
For $i=0 To UBound($Auto_list)-1
$iIndex = _ArraySearch($servlist,$Auto_list[$i],0,0,0,1)
if $iIndex <> -1 Then
_ArrayDelete($servlist, $iIndex)
EndIf
Next
For $i=0 To UBound($Demand_list)-1
$iIndex = _ArraySearch($servlist,$Demand_list[$i],0,0,0,1)
if $iIndex <> -1 Then
_ArrayDelete($servlist, $iIndex)
EndIf
Next
;设置其他服务...
For $i In $servlist
_SerSetState($i, 3)
_ServStop($i)
EndIf
Next
MsgBox(0,"","服务设置完成!")
只是给出了一个框架. 本帖最后由 netegg 于 2010-5-3 09:42 编辑
对非系统进程,这个已经把数组指定了,没多大用,枚举注册表才行,或者用userinclude里的sevicecontrol函数库里的enum来获取服务列表 $servlist = _ServListInstalled() 这个不就是获取本机的服务列表么? 回复 4# jackass110
wmi服务要是关了呢 回复 5# netegg
哦,这点没考虑到,,如果先把wmi运行的话就没什么问题了吧? 回复 6# jackass110
这我就不知道了,我一般优化xp服务的时候,先把wmi卸了,没什么大用 回复 3# netegg
请问元老这个enum怎么用来着,给个例子吧。。。也在研究中 _Service_Enum(32)
页:
[1]