找回密码
 加入
搜索
查看: 3824|回复: 10

[系统综合] 如何判断服务里某一个服务是否存在?

  [复制链接]
发表于 2012-1-20 23:50:29 | 显示全部楼层 |阅读模式
比如判断有没有W3SVC服务。有则执行A段程序,没有则执行B段程序。

评分

参与人数 1金钱 -10 收起 理由
afan -10

查看全部评分

发表于 2012-1-21 06:15:20 | 显示全部楼层
#include<services.au3>
_Service_Exists

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2012-1-21 10:42:33 | 显示全部楼层
#include
_Service_Exists
netegg 发表于 2012-1-21 06:15




这  什么
意思?
 楼主| 发表于 2012-1-21 10:42:57 | 显示全部楼层
比如:

1.IIS卸载程序正在运行
2.判定“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\”下W3SVC存在与否。
3.如果有继续执行程序否则执行下一步


如何来实现。
发表于 2012-1-21 11:55:25 | 显示全部楼层
本帖最后由 Ycxw2008 于 2012-1-21 12:09 编辑
Local $PCNAME=InputBox('提示','请输入电脑名'),$ServerName=InputBox('提示','请输入服务名')
;为了方便你测试,如果测试成功可以不用InputBox,直接按下面格式
;$Pcname='PC',
;$ServerName='WSearch'
;简单测试了下,是需要服务的短名称);WSearch=Windows Search
If $PcName='' Or $ServerName='' Then
     MsgBox(0,'警告','缺少必须变量')
     exit
Endif

If  _ServiceExists($PCNAME,$ServerName) Then
                MsgBox(0, '', '继续卸载');可以执行卸载程序
                
        Else
               Exit;不存在则退出
        EndIf
        
Func _ServiceExists($sComputerName, $sServiceName)
        Local $hAdvapi32
        Local $arRet
        Local $hSC
        Local $bExist = 0

        $hAdvapi32 = DllOpen("advapi32.dll")
        If $hAdvapi32 = -1 Then Return 0
        $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
                        "str", $sComputerName, _
                        "str", "ServicesActive", _
                        "long", 0x0001)
        If $arRet[0] <> 0 Then
                $hSC = $arRet[0]
                $arRet = DllCall($hAdvapi32, "long", "OpenService", _
                                "long", $hSC, _
                                "str", $sServiceName, _
                                "long", 0x0080)
                If $arRet[0] <> 0 Then
                        $bExist = 1
                        DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $arRet[0])
                EndIf
                DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
        EndIf
        DllClose($hAdvapi32)
        Return $bExist
EndFunc   ;==>_ServiceExist
上面函数也是Copy"ServiceControl.au3"里的 只是让你更好理解
再有需求请自行打开ServiceControl.au3研究,找不到就everything搜

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-1-21 12:15:52 | 显示全部楼层
服务控制的UDF哈
发表于 2012-1-21 23:46:02 | 显示全部楼层
蛋蛋已经给出答应了,自己去看帮助吧!
 楼主| 发表于 2012-1-22 10:30:49 | 显示全部楼层
谢谢,已经解决。
发表于 2012-1-27 16:25:08 | 显示全部楼层
这个UDF好用的很啊
发表于 2012-1-30 04:19:02 | 显示全部楼层
这个UDF貌似咩有找到帮助文档...
发表于 2012-2-1 11:48:41 | 显示全部楼层
试了一下这个代码,写的不错,谢谢楼主。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-19 16:33 , Processed in 0.097140 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表