aardio 文档

service 库模块帮助文档

service 成员列表

NT服务操作
部分操作需要管理权限

service.activeSessionId()

返回操作系统活动用户会话ID,
更多会话控制请参考标准库 win.ts

service.create(启动路径,服务名,显示全名,服务描述)

创建服务,
参数@1可为空,默认使用当前应用程序路径,
其他可选参数未列出请查看函数源码

service.delete("服务名")

删除服务
注意删除服务前最好关闭服务管理器

service.each()

返回对象:ntsrvsta2Object

service.each(serviceType,serviceState,groupName)

for( serviceName,displayName,svrStatusProcess in service.each()){
    io.print(serviceName, displayName,svrStatusProcess.state) 
}

service.eachSession()

for id,station,state in service.eachSession(){
    if( state == 0 ) return id;/*遍历操作系统所有登录用户会话,  
id为会话ID,station为会话名,state为会话状态  
state为0为登录激活状态,1为已连接,4为断开状态*/
}

service.isExist("服务名")

是否存在指定的服务

service.isRunning("服务名")

服务是否正在运行

service.isStopped("服务名")

服务是否已停止

service.manager()

返回对象:ntsrvmgrObject

service.manager(desiredAccess,machineName,databaseName)

创建管理器

service.msgbox("文本","标题",等待超时值,样式)

弹出对话框
返回用户操作ID,如果不指定超时值返回IDASYNC 32001
超时值以毫秒为单位,超时为0表示一直等待,不指定超时则不等待用户操作,
除参数一以外,其他所有参数可选
如果参数@1是表对象,自动调用table.tostring序列化为文本
其他类型调用tostring转为字符串

service.msgboxErr("文本","标题")

弹出错误对话框
所有者窗口参数可选
如果参数@1是表对象,自动调用table.tostring序列化为文本
其他类型调用tostring转为字符串

service.msgboxTest("文本","标题")

返回布尔值表示用户是否按了“确定”按钮。
标题,所有者窗口参数可选

service.pause("服务名")

暂停服务,
成功返回true,
失败请使用lasterr函数获取错误信息

service.registerCtrlThread()

返回对象:ntsrvsta2Object

service.registerCtrlThread(serviceName,handle)

service.registerCtrlThread( serviceName,function(control,eventType,pEventData){  

    }  
)

service.restart("服务名",停止超时,启动超时)

重新启动服务,成功返回true,
超时以秒为单位,省略则不限时间等待操作完成
停止超时达到时间后服务未正常停止则强制中断服务进程

service.resume("服务名")

暂停状态恢复运行,
成功返回true,
失败请使用lasterr函数获取错误信息

service.serviceName

当前服务线程中运行的NT服务名,
主线程应自行指定

service.sessions()

返回操作系统所有登录用户会话,
更多会话控制请参考标准库 win.ts

service.start("服务名")

启动服务,
成功返回true,
失败请使用lasterr函数获取错误信息

service.startDispatchThread(服务回调函数表)

service.service.startDispatchThread(   
    服务名 = function(serviceName,argv){  
        import service;   
        var srvStatus = service.registerCtrlThread(serviceName,function(control,eventType,pEventData){   
            import service;   
            if( control == 0x1/*_SERVICE_CONTROL_STOP*/ ){    
                service.updateStatus({currentState = 0x1/*_SERVICE_STOPPED*/},owner.serviceName);   
            }   
        } )  

        srvStatus.controlsAccepted = 0x1/*_SERVICE_ACCEPT_STOP*/  
        srvStatus.currentState = 0x4/*_SERVICE_RUNNING*/;  
        service.updateStatus(srvStatus,serviceName)  

        /*服务运行代码*/  

        srvStatus.controlsAccepted = 0;  
        srvStatus.currentState = 0x1/*_SERVICE_STOPPED*/  
        service.updateStatus(srvStatus,serviceName)  
    }  
)

service.stop("服务名")

停止服务,
成功返回true,
失败请使用lasterr函数获取错误信息

service.stop("服务名",true)

停止服务,如果失败就强制中断服务进程,
成功返回true,
失败请使用lasterr函数获取错误信息

service.terminate("服务名")

强制中断服务进程,
成功返回true,

service.updateStatus(服务状态表,服务名)

参数@1应是registerCtrlHandler函数的返回值,
在CtrlHandler函数中指定部分需要更新的值即可

ntsrvconfigObject 成员列表

ntsrvconfigObject.binaryPathName

binaryPathName

ntsrvconfigObject.dependencies

dependencies

ntsrvconfigObject.displayName

displayName

ntsrvconfigObject.errorControl

errorControl

ntsrvconfigObject.loadOrderGroup

loadOrderGroup

ntsrvconfigObject.serviceStartName

serviceStartName

ntsrvconfigObject.serviceType

serviceType

ntsrvconfigObject.startType

startType

ntsrvconfigObject.tagId

tagId

ntsrvmgrObject 成员列表

ntsrvmgrObject.changeConfig(serviceName,serviceType,startType)

修改配置,其他可选参数未列出请查看函数源码

ntsrvmgrObject.changeConfig2("服务名",配置项,配置值)

修改配置
配置值必须是结构体

ntsrvmgrObject.changeDescription("服务名","说明")

修改服务说明

ntsrvmgrObject.close()

关闭

ntsrvmgrObject.control(serviceName,desiredAccess,control)

控制服务

ntsrvmgrObject.create(启动路径,服务名,显示全名)

创建服务,其他可选参数未列出请查看函数源码

ntsrvmgrObject.delete("服务名")

删除服务
注意删除服务前最好关闭服务管理器

ntsrvmgrObject.eachDependent("服务名")

for(serviceName,displayName,serviceStatus in ntsrvmgrObject.eachDependent("/*指定服务名列出依赖此服务的服务*/") ){

}

ntsrvmgrObject.eachDependent()

返回对象:ntsrvsta2Object

ntsrvmgrObject.isExist("服务名")

是否存在指定的服务

ntsrvmgrObject.isRunning("服务名")

服务是否正在运行

ntsrvmgrObject.isStopped("服务名")

服务是否已停止

ntsrvmgrObject.open(serviceName,desiredAccess)

打开服务句柄

ntsrvmgrObject.pause("服务名")

暂停服务,
成功返回true,
失败请使用lasterr函数获取错误信息

ntsrvmgrObject.queryBinaryPathName("服务名")

返回启动路径以及参数

ntsrvmgrObject.queryConfig("服务名")

返回配置

ntsrvmgrObject.queryConfig()

返回对象:ntsrvconfigObject

ntsrvmgrObject.queryConfig2("服务名",配置项,配置值)

获取配置
配置值必须是结构体

ntsrvmgrObject.queryDescription("服务名")

返回服务说明

ntsrvmgrObject.queryStatus("服务名")

成功返回一个表示服务状态的表对象

ntsrvmgrObject.queryStatus()

返回对象:ntsrvsta2Object

ntsrvmgrObject.resume("服务名")

暂停状态恢复运行,
成功返回true,
失败请使用lasterr函数获取错误信息

ntsrvmgrObject.start("服务名")

启动服务,
成功返回true,
失败请使用lasterr函数获取错误信息

ntsrvmgrObject.startAndWait("服务名",进程权限)

启动服务并等待服务进程切换到运行状态,
返回打开的进程对象(process 对象),可选用参数@2指定进程访问权限

ntsrvmgrObject.startAndWait()

返回对象:processObject

ntsrvmgrObject.startAutomatic("服务名")

设置为自动启动

ntsrvmgrObject.startDelayed("服务名",是否延时)

设置为延时启动

ntsrvmgrObject.startDisabled("服务名")

设置为禁用

ntsrvmgrObject.startManual("服务名")

设置为手动启动

ntsrvmgrObject.stop("服务名")

停止服务,
成功返回true,
失败请使用lasterr函数获取错误信息

ntsrvmgrObject.stop("服务名",true)

停止服务,如果失败就强制中断服务进程,
成功返回true,
失败请使用lasterr函数获取错误信息

ntsrvmgrObject.terminate("服务名")

强制中断服务进程,
成功返回true,

ntsrvmgrObject.wait("服务名",状态码)

等待服务切换到指定状态
状态码不指定时默认为 4/*_SERVICE_RUNNING*/
成功返回一个表示服务状态的表对象

ntsrvmgrObject.wait()

返回对象:ntsrvsta2Object

ntsrvsta2Object 成员列表

ntsrvsta2Object.checkPoint

checkPoint

ntsrvsta2Object.controlsAccepted

controlsAccepted

ntsrvsta2Object.currentState

currentState

ntsrvsta2Object.processId

processId

ntsrvsta2Object.serviceFlags

processId

ntsrvsta2Object.serviceSpecificExitCode

serviceSpecificExitCode

ntsrvsta2Object.serviceType

serviceType

ntsrvsta2Object.state

state

ntsrvsta2Object.waitHint

waitHint

ntsrvsta2Object.win32ExitCode

win32ExitCode

自动完成常量

_SERVICE_ACCEPT_HARDWAREPROFILECHANGE=0x20
_SERVICE_ACCEPT_NETBINDCHANGE=0x10
_SERVICE_ACCEPT_PARAMCHANGE=0x8
_SERVICE_ACCEPT_PAUSE_CONTINUE=0x2
_SERVICE_ACCEPT_POWEREVENT=0x40
_SERVICE_ACCEPT_SESSIONCHANGE=0x80
_SERVICE_ACCEPT_SHUTDOWN=0x4
_SERVICE_ACCEPT_STOP=0x1
_SERVICE_ADAPTER=0x4
_SERVICE_AUTO_START=0x2
_SERVICE_BOOT_START=0x0
_SERVICE_CONTINUE_PENDING=0x5
_SERVICE_CONTROL_CONTINUE=0x3
_SERVICE_CONTROL_HARDWAREPROFILECHANGE=0xC
_SERVICE_CONTROL_NETBINDADD=0x7
_SERVICE_CONTROL_NETBINDDISABLE=0xA
_SERVICE_CONTROL_NETBINDENABLE=0x9
_SERVICE_CONTROL_NETBINDREMOVE=0x8
_SERVICE_CONTROL_PARAMCHANGE=0x6
_SERVICE_CONTROL_PAUSE=0x2
_SERVICE_CONTROL_POWEREVENT=0xD
_SERVICE_CONTROL_SESSIONCHANGE=0xE
_SERVICE_CONTROL_SHUTDOWN=0x5
_SERVICE_CONTROL_STOP=0x1
_SERVICE_DEMAND_START=0x3
_SERVICE_DISABLED=0x4
_SERVICE_FILE_SYSTEM_DRIVER=0x2
_SERVICE_KERNEL_DRIVER=0x1
_SERVICE_PAUSED=0x7
_SERVICE_PAUSE_PENDING=0x6
_SERVICE_RECOGNIZER_DRIVER=0x8
_SERVICE_RUNNING=0x4
_SERVICE_RUNS_IN_SYSTEM_PROCESS=0x1
_SERVICE_START_PENDING=0x2
_SERVICE_STOPPED=0x1
_SERVICE_STOP_PENDING=0x3
_SERVICE_SYSTEM_START=0x1
_SERVICE_WIN32=0x30
_SERVICE_WIN32_OWN_PROCESS=0x10
_SERVICE_WIN32_SHARE_PROCESS=0x20

Markdown 格式