本帖最后由 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,"","服务设置完成!")
|