找回密码
 加入
搜索
查看: 11485|回复: 25

[系统综合] 请问那个官方的services.au3怎样创建服务呢?急需,多谢!

 火.. [复制链接]
发表于 2009-8-6 17:43:54 | 显示全部楼层 |阅读模式
请问各位高手们那个官方services.au3的创建服务怎样使用呢?
能否说说每一项参数应该怎样填写呢?

函数的圆形是这样的:
Func _Service_Create( $sServiceName, _
                $sDisplayName, _
                $iServiceType, _
                $iStartType, _
                $iErrorControl, _
                $sBinaryPath, _
                $sLoadOrderGroup = Default, _
                $fTagId = Default, _
                $vDependencies = Default, _
                $sServiceUser = Default, _
                $sPassword = Default, _
                $sComputerName = "" )

不知道每一项参数填写什么,知道的朋友麻烦说下.多谢了!
急需要使用,麻烦大家了.
发表于 2009-8-6 18:06:52 | 显示全部楼层
_Service_Create( '服务名', '显示名', '', '启动类型', '', '路径')
 楼主| 发表于 2009-8-6 18:31:35 | 显示全部楼层
我知道启动类型啊,但是写什么呢?
数字"2",还是字母"auto"呢?
发表于 2009-8-6 18:50:28 | 显示全部楼层
留空就行 = 自动启动 = 0x00000002
 楼主| 发表于 2009-8-6 19:08:37 | 显示全部楼层
注册不了哦,运行了虽然没错误。但是也不会添加服务。都重启n变了。

我是这样写的:

#include "Services.au3"
_Service_Create("ServiceName","Display Service Name","","0x00000002","","c:\xxx.exe")

我真的怀疑这个函数是不是不能用的啊?
发表于 2009-8-6 19:36:10 | 显示全部楼层
我用我这的版本<ServiceControl.au3> 测试很正常。
#Include<ServiceControl.au3>
_CreateService('','aaa','bbb','C:\ccc.exe')
;_DeleteService('','aaa')
 楼主| 发表于 2009-8-6 19:50:38 | 显示全部楼层
哦,楼上的朋友能提供下你的头文件吗?
急需要用呢。多谢!
发表于 2009-8-6 19:55:49 | 显示全部楼层
上传了。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-8-6 20:32:31 | 显示全部楼层
多谢多谢!
 楼主| 发表于 2009-8-6 20:40:47 | 显示全部楼层
感谢楼上的朋友。
服务是建立成功了,但是无法启动。

提示:
在 本地计算机 无法启动 Keyboard Service 服务。

错误 1053: 服务没有及时响应启动或控制请求。
 楼主| 发表于 2009-8-7 06:27:42 | 显示全部楼层
谁知道这是什么原因吗?
google了下,好像编写系统服务程序还得有一定的规则。
麻烦知道的高手们能说说。这个au3是否能像msc一样编写服务程序呢。
发表于 2009-11-30 10:42:48 | 显示全部楼层
AU3创建的服务需要 启动对象返回是否成功的提示
发表于 2009-11-30 14:42:17 | 显示全部楼层
Func _CreateService($name, $displayname, $pathname, $startmode = "Automatic", $desktopinteract = True, $startname = "", $servicetype = 16, $errorcontrol = 0)

        Local $password

        $objServices = ObjGet("winmgmts:root\cimv2")

        $objService = $objServices.Get("Win32_Service")

        $objInParam = $objService.Methods_("Create") .inParameters.SpawnInstance_()

        $objInParam.Properties_.item("Name") = $name;< - Service Name
        $objInParam.Properties_.item("DisplayName") = $displayname;< - Display Name, what you see in the Services control panel
        $objInParam.Properties_.item("PathName") = $pathname;< - Path and Command Line of the executable
        $objInParam.Properties_.item("ServiceType") = $servicetype
        $objInParam.Properties_.item("ErrorControl") = $errorcontrol
        $objInParam.Properties_.item("StartMode") = $startmode
        $objInParam.Properties_.item("DesktopInteract") = $desktopinteract
        If Not $startname = "" Then
                $objInParam.Properties_.item("StartName") = $startname;< - If null, will run as Local System
        EndIf
        If Not $password = "" And Not $startname = "" Then
                $objInParam.Properties_.item("StartPassword") = $password;< - Only populate if the SatrtName param is populated
        EndIf

        $objOutParams = $objService.ExecMethod_("Create", $objInParam)
        ConsoleWrite($objOutParams)
EndFunc   ;==>_CreateService

;删除服务
Func _DeleteService($name)
        Dim $objWMIService, $objItem, $objService
        Dim $colListOfServices, $strService

        $strService = $name;< - Service Name

        $objWMIService = ObjGet("winmgmts:root\cimv2")

        $colListOfServices = $objWMIService.ExecQuery("Select * from Win32_Service Where Name = '" & $strService & "'")

        For $objService In $colListOfServices
                $objService.Delete()
        Next
EndFunc   ;==>_DeleteService

;开始服务
Func _StartService($name)
        Dim $objWMIService, $objItem, $objService
        Dim $colListOfServices, $strService

        $strService = $name;< - Service Name

        $objWMIService = ObjGet("winmgmts:root\cimv2")

        $colListOfServices = $objWMIService.ExecQuery("Select * from Win32_Service Where Name = '" & $strService & "'")

        For $objService In $colListOfServices
                $objService.StartService()
        Next
EndFunc   ;==>_StartService

;停止服务
Func _StopService($name)
        Dim $objWMIService, $objItem, $objService
        Dim $colListOfServices, $strService

        $strService = $name;< - Service Name

        $objWMIService = ObjGet("winmgmts:root\cimv2")

        $colListOfServices = $objWMIService.ExecQuery("Select * from Win32_Service Where Name = '" & $strService & "'")

        For $objService In $colListOfServices
                $objService.StopService()
        Next
EndFunc   ;==>_StopService
创建服务,并不一定使用这些函数就能成功加载,有些还得在注册表中写入键值,才能成功加载或启动服务。
发表于 2009-12-6 02:05:44 | 显示全部楼层
谢谢楼上的无私奉献精神, 复制代码过来收藏学习了. 使用过程中, 如有搞不懂之处, 还望坛上高手们指教.
发表于 2010-1-7 08:06:38 | 显示全部楼层
学习中...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 09:23 , Processed in 0.084472 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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