如:监控一个服务XX点至XX点开始启动,XX点到XX点是停止状态,XX点到XX点又开始启动;
请给出核心代码及思路;
5 个解决方案
#2
MVP啊,感谢回复;
我VB不熟,请教“纯VB真正实现稳定的NT服务”内的代码是否要建立一个ActiveX exe文件还是要建立一个标准的EXE文件?
我不知道自己理解的对不对:
首先新建工程,将以上代码保存为SC后编译;
然后在DOS内运行SC query "lanmanserver" >> c:\1.txt
SC是编译后的Exe文件,后面的>>c:\1.txt 知道是输出到文件,query 和"lanmanserver"是什么?"Lanmanserver"是要监控的服务名吗?
以上请帮忙解释下,不胜感激!
我VB不熟,请教“纯VB真正实现稳定的NT服务”内的代码是否要建立一个ActiveX exe文件还是要建立一个标准的EXE文件?
我不知道自己理解的对不对:
首先新建工程,将以上代码保存为SC后编译;
然后在DOS内运行SC query "lanmanserver" >> c:\1.txt
SC是编译后的Exe文件,后面的>>c:\1.txt 知道是输出到文件,query 和"lanmanserver"是什么?"Lanmanserver"是要监控的服务名吗?
以上请帮忙解释下,不胜感激!
#3
sc命令还是要掌握的。
C:\>sc /?
错误: 未知命令
描述:
SC 是用于与
服务控制管理器和服务进行通信的命令行程序。
用法:
sc <server> [command] [service name] <option1> <option2>...
选项 <server> 的格式为 "\\ServerName"
可以键入 "sc [command]" 以获得命令的进一步帮助
命令:
query-----------查询服务的状态, 或
枚举服务类型的状态。
queryex---------查询服务的扩展状态, 或
枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改服务失败时所进行的操作。
sidtype---------更改服务的服务 SID 类型。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询服务失败时所进行的操作。
qsidtype--------查询服务的服务 SID 类型。
delete----------(从注册表)删除服务。
create----------创建服务(将其添加到注册表)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示与
任意名称相对应的服务 SID 字符串。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务的依存关系。
下列命令不要求服务名称:
sc <server> <command> <option>
boot------------(ok | bad) 表明是否将最后一次启动
保存为最后一次的正确启动配置
Lock------------锁定服务数据库
QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
sc start MyService
是否要查看 QUERY 和 QUERYEX 命令的帮助? [ y | n ]:
QUERY 和 QUERYEX 选项:
如果查询命令带服务名称,将返回
该服务的状态。其他选项不适合这种
情况。如果查询命令不带参数或
带下列选项之一,将枚举此服务。
type= 要枚举的服务的类型(driver, service, all)
默认 = service)
state= 要枚举的服务的状态 (inactive, all)
(默认 = active)\n"
bufsize= 枚举缓冲区的大小(以字节计)
(默认 = 4096)
ri= 开始枚举的恢复索引号\n"
(默认 = 0)
group= 要枚举的服务组
(默认 = all groups)
句法示例
sc query - 枚举活动服务和驱动程序的状态
sc query messenger - 显示信使服务的状态
sc queryex messenger - 显示信使服务的扩展状态
sc query type= driver - 仅枚举活动驱动程序
sc query type= service - 仅枚举 Win32 服务
sc query state= all - 枚举所有服务和驱动程序
sc query bufsize= 50 - 枚举缓冲区为 50 字节
sc query ri= 14 - 枚举时恢复索引 = 14
sc queryex group= \"\" - 枚举不在组内的活动服务
sc query type= service type= interact - 枚举所有不活动服务
sc query type= driver group= NDIS - 枚举所有 NDIS 驱动程序
C:\>sc /?
错误: 未知命令
描述:
SC 是用于与
服务控制管理器和服务进行通信的命令行程序。
用法:
sc <server> [command] [service name] <option1> <option2>...
选项 <server> 的格式为 "\\ServerName"
可以键入 "sc [command]" 以获得命令的进一步帮助
命令:
query-----------查询服务的状态, 或
枚举服务类型的状态。
queryex---------查询服务的扩展状态, 或
枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改服务失败时所进行的操作。
sidtype---------更改服务的服务 SID 类型。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询服务失败时所进行的操作。
qsidtype--------查询服务的服务 SID 类型。
delete----------(从注册表)删除服务。
create----------创建服务(将其添加到注册表)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示与
任意名称相对应的服务 SID 字符串。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务的依存关系。
下列命令不要求服务名称:
sc <server> <command> <option>
boot------------(ok | bad) 表明是否将最后一次启动
保存为最后一次的正确启动配置
Lock------------锁定服务数据库
QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
sc start MyService
是否要查看 QUERY 和 QUERYEX 命令的帮助? [ y | n ]:
QUERY 和 QUERYEX 选项:
如果查询命令带服务名称,将返回
该服务的状态。其他选项不适合这种
情况。如果查询命令不带参数或
带下列选项之一,将枚举此服务。
type= 要枚举的服务的类型(driver, service, all)
默认 = service)
state= 要枚举的服务的状态 (inactive, all)
(默认 = active)\n"
bufsize= 枚举缓冲区的大小(以字节计)
(默认 = 4096)
ri= 开始枚举的恢复索引号\n"
(默认 = 0)
group= 要枚举的服务组
(默认 = all groups)
句法示例
sc query - 枚举活动服务和驱动程序的状态
sc query messenger - 显示信使服务的状态
sc queryex messenger - 显示信使服务的扩展状态
sc query type= driver - 仅枚举活动驱动程序
sc query type= service - 仅枚举 Win32 服务
sc query state= all - 枚举所有服务和驱动程序
sc query bufsize= 50 - 枚举缓冲区为 50 字节
sc query ri= 14 - 枚举时恢复索引 = 14
sc queryex group= \"\" - 枚举不在组内的活动服务
sc query type= service type= interact - 枚举所有不活动服务
sc query type= driver group= NDIS - 枚举所有 NDIS 驱动程序
#4
SC是命令行中的一个工具,用于管理服务.
在VB中调用,则需要由cmd.exe来代为调用,语法:
其中SeviceName为String类型变量,就是服务名.
调用后会将指定服务的状态写入1.txt中,然后只需要读这个TXT中的内容,就能知道结果了.
而那个NT服务的代码,工程类型为标准EXE.
上面的SC命令及检查1.TXT中结果的代码都要写在NT服务工作循环内,这些具体实现细节自己研究吧!
在VB中调用,则需要由cmd.exe来代为调用,语法:
Shell "cmd.exe /c SC query """ & SeviceName & """ >> " & app.path & "\1.txt",vbhide
其中SeviceName为String类型变量,就是服务名.
调用后会将指定服务的状态写入1.txt中,然后只需要读这个TXT中的内容,就能知道结果了.
而那个NT服务的代码,工程类型为标准EXE.
上面的SC命令及检查1.TXT中结果的代码都要写在NT服务工作循环内,这些具体实现细节自己研究吧!
#5
还是不太明白,
先谢谢两位,我自己慢慢再琢磨下;
先谢谢两位,我自己慢慢再琢磨下;
#1
#2
MVP啊,感谢回复;
我VB不熟,请教“纯VB真正实现稳定的NT服务”内的代码是否要建立一个ActiveX exe文件还是要建立一个标准的EXE文件?
我不知道自己理解的对不对:
首先新建工程,将以上代码保存为SC后编译;
然后在DOS内运行SC query "lanmanserver" >> c:\1.txt
SC是编译后的Exe文件,后面的>>c:\1.txt 知道是输出到文件,query 和"lanmanserver"是什么?"Lanmanserver"是要监控的服务名吗?
以上请帮忙解释下,不胜感激!
我VB不熟,请教“纯VB真正实现稳定的NT服务”内的代码是否要建立一个ActiveX exe文件还是要建立一个标准的EXE文件?
我不知道自己理解的对不对:
首先新建工程,将以上代码保存为SC后编译;
然后在DOS内运行SC query "lanmanserver" >> c:\1.txt
SC是编译后的Exe文件,后面的>>c:\1.txt 知道是输出到文件,query 和"lanmanserver"是什么?"Lanmanserver"是要监控的服务名吗?
以上请帮忙解释下,不胜感激!
#3
sc命令还是要掌握的。
C:\>sc /?
错误: 未知命令
描述:
SC 是用于与
服务控制管理器和服务进行通信的命令行程序。
用法:
sc <server> [command] [service name] <option1> <option2>...
选项 <server> 的格式为 "\\ServerName"
可以键入 "sc [command]" 以获得命令的进一步帮助
命令:
query-----------查询服务的状态, 或
枚举服务类型的状态。
queryex---------查询服务的扩展状态, 或
枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改服务失败时所进行的操作。
sidtype---------更改服务的服务 SID 类型。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询服务失败时所进行的操作。
qsidtype--------查询服务的服务 SID 类型。
delete----------(从注册表)删除服务。
create----------创建服务(将其添加到注册表)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示与
任意名称相对应的服务 SID 字符串。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务的依存关系。
下列命令不要求服务名称:
sc <server> <command> <option>
boot------------(ok | bad) 表明是否将最后一次启动
保存为最后一次的正确启动配置
Lock------------锁定服务数据库
QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
sc start MyService
是否要查看 QUERY 和 QUERYEX 命令的帮助? [ y | n ]:
QUERY 和 QUERYEX 选项:
如果查询命令带服务名称,将返回
该服务的状态。其他选项不适合这种
情况。如果查询命令不带参数或
带下列选项之一,将枚举此服务。
type= 要枚举的服务的类型(driver, service, all)
默认 = service)
state= 要枚举的服务的状态 (inactive, all)
(默认 = active)\n"
bufsize= 枚举缓冲区的大小(以字节计)
(默认 = 4096)
ri= 开始枚举的恢复索引号\n"
(默认 = 0)
group= 要枚举的服务组
(默认 = all groups)
句法示例
sc query - 枚举活动服务和驱动程序的状态
sc query messenger - 显示信使服务的状态
sc queryex messenger - 显示信使服务的扩展状态
sc query type= driver - 仅枚举活动驱动程序
sc query type= service - 仅枚举 Win32 服务
sc query state= all - 枚举所有服务和驱动程序
sc query bufsize= 50 - 枚举缓冲区为 50 字节
sc query ri= 14 - 枚举时恢复索引 = 14
sc queryex group= \"\" - 枚举不在组内的活动服务
sc query type= service type= interact - 枚举所有不活动服务
sc query type= driver group= NDIS - 枚举所有 NDIS 驱动程序
C:\>sc /?
错误: 未知命令
描述:
SC 是用于与
服务控制管理器和服务进行通信的命令行程序。
用法:
sc <server> [command] [service name] <option1> <option2>...
选项 <server> 的格式为 "\\ServerName"
可以键入 "sc [command]" 以获得命令的进一步帮助
命令:
query-----------查询服务的状态, 或
枚举服务类型的状态。
queryex---------查询服务的扩展状态, 或
枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改服务失败时所进行的操作。
sidtype---------更改服务的服务 SID 类型。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询服务失败时所进行的操作。
qsidtype--------查询服务的服务 SID 类型。
delete----------(从注册表)删除服务。
create----------创建服务(将其添加到注册表)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示与
任意名称相对应的服务 SID 字符串。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务的依存关系。
下列命令不要求服务名称:
sc <server> <command> <option>
boot------------(ok | bad) 表明是否将最后一次启动
保存为最后一次的正确启动配置
Lock------------锁定服务数据库
QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
sc start MyService
是否要查看 QUERY 和 QUERYEX 命令的帮助? [ y | n ]:
QUERY 和 QUERYEX 选项:
如果查询命令带服务名称,将返回
该服务的状态。其他选项不适合这种
情况。如果查询命令不带参数或
带下列选项之一,将枚举此服务。
type= 要枚举的服务的类型(driver, service, all)
默认 = service)
state= 要枚举的服务的状态 (inactive, all)
(默认 = active)\n"
bufsize= 枚举缓冲区的大小(以字节计)
(默认 = 4096)
ri= 开始枚举的恢复索引号\n"
(默认 = 0)
group= 要枚举的服务组
(默认 = all groups)
句法示例
sc query - 枚举活动服务和驱动程序的状态
sc query messenger - 显示信使服务的状态
sc queryex messenger - 显示信使服务的扩展状态
sc query type= driver - 仅枚举活动驱动程序
sc query type= service - 仅枚举 Win32 服务
sc query state= all - 枚举所有服务和驱动程序
sc query bufsize= 50 - 枚举缓冲区为 50 字节
sc query ri= 14 - 枚举时恢复索引 = 14
sc queryex group= \"\" - 枚举不在组内的活动服务
sc query type= service type= interact - 枚举所有不活动服务
sc query type= driver group= NDIS - 枚举所有 NDIS 驱动程序
#4
SC是命令行中的一个工具,用于管理服务.
在VB中调用,则需要由cmd.exe来代为调用,语法:
其中SeviceName为String类型变量,就是服务名.
调用后会将指定服务的状态写入1.txt中,然后只需要读这个TXT中的内容,就能知道结果了.
而那个NT服务的代码,工程类型为标准EXE.
上面的SC命令及检查1.TXT中结果的代码都要写在NT服务工作循环内,这些具体实现细节自己研究吧!
在VB中调用,则需要由cmd.exe来代为调用,语法:
Shell "cmd.exe /c SC query """ & SeviceName & """ >> " & app.path & "\1.txt",vbhide
其中SeviceName为String类型变量,就是服务名.
调用后会将指定服务的状态写入1.txt中,然后只需要读这个TXT中的内容,就能知道结果了.
而那个NT服务的代码,工程类型为标准EXE.
上面的SC命令及检查1.TXT中结果的代码都要写在NT服务工作循环内,这些具体实现细节自己研究吧!
#5
还是不太明白,
先谢谢两位,我自己慢慢再琢磨下;
先谢谢两位,我自己慢慢再琢磨下;