查看文章 |
作为一个命令行工具,SC.exe可以用来测试你自己的系统,你可以设置一个批处理文件来使用不同的参数调用 SC.exe来控制服务。这个很有用,如果你想看看你的服务不断的启动和停止,我没有试过哦!让一个服务一下子 打开,一下子关闭,听上去很不错的。如果你的服务进程里面有多个进程的话,你可以保持一个进程继续运行不 让它走开,然后让另一个不断的打开在关闭,还可以寻找一下内存缺乏导致不完全清楚的证据。 SC使用这样的语法: 2. SC [command] 这里使用第一种语法使用SC,使用第二种语法显示帮助。 下面介绍各种参数。 Servername 就不用添加任何参数。 Command config----改变一个服务的配置。(长久的) continue--对一个服务送出一个继续控制的要求。 control----对一个服务送出一个控制。 create----创建一个服务。(增加到注册表中) delete----删除一个服务。(从注册表中删除) EnumDepend--列举服务的从属关系。 GetDisplayName--获得一个服务的显示名称。 GetKeyName--获得一个服务的服务键名。 interrogate--对一个服务送出一个询问控制要求。 pause----对一个服务送出一个暂停控制要求。 qc----询问一个服务的配置。 query----询问一个服务的状态,也可以列举服务的状态类型。 start----启动一个服务。 stop----对一个服务送出一个停止的要求。 Servicename 制面板看到),而SC是使用服务键名来鉴别服务的。 Optionname 号之间是没有空格的。一开始我不知道,结果………………,比如,start= optionvalues,这个很重要。 optionvalues可以是0,1,或者是更多的操作参数名称和数值对。 Optionvalues sc command来询问每个命令。 Comments 当你键入SC而不带任何参数时,SC.exe会显示帮助信息和可用的命令。当你键入SC紧跟着命令名称时,你可以得 到一个有关这个命令的详细列表。比如,键入sc create可以得到和create有关的列表。 当你使用start命令时,你可以传递一些参数(arguments)给服务的主函数,但是不是给服务进程的主函数。 SC create 语法1 这里的servername,servicename,optionname,optionvalues和上面的一样,这里就不多说了。这里我们详细说 明一下optionname和optionvalues。 Optionname--Optionvalues type=----own, share, interact, kernel, filesys start=----boot, sys tem, auto, demand, disabled error=----normal, severe, critical, ignore binPath=--(string) group=----(string) tag=----(string) 以使用这个没有多少意义。默认是nothing depend=----(space separated string)有空格的字符串。 obj=----(string) Displayname=--(string) password=--(string) Optionvalues 一个空的字符串将被导入。 Comments 例1 按照默认,这个服务会建立一个WIN32_SHARE_PROCESS使用SERVICE_DEMAND_START启动方式。这将不会有任何从属 关系,也将会按照localsys tem安全上下关系来运行。 例2 从属于TDI组和NetBios服务上。注意,你必须在从属中间增加一个空格的引用。 sc create NewService binpath= c:winntsys tem32NewServ.exe type= own 例3 面这个例子就可以让我们看到如何改变服务的配置。 sc config NewService binpath= 'ntsd -d c:winntsys tem32Newserv.exe' 当系统装入newserv.exe时ntsd将会转而打断调试器,所以断点可以被设置在服务代码里。 SC QC 语法1 Parameters Buffersize,可选择的,列出缓冲区的尺寸。 Comments SC QC命令显示了QUERY_SERVICE_CONFIG结构的内容。 以下是QUERY_SERVICE_CONFIG相应的区域。 例1 下面这个例子询问了在上面例子中建立的“NewService”服务的配置: sc myserver qc NewService sc显示下面的信息: SERVICE_NAME: NewService NewService有能力和其他的服务共享一个进程。但是它不是自动启动的。二进制文件名是NewServ.exe。这个服务 不依靠与其它的的服务,而且运行在lcoalsys tem的安全上下关系中。这些都是调用QueryServiceStatus基本的返 回,如果还需要更多的细节届时,可以看看API函数文件。 SC QUERY SC QUERY命令可以获得服务的信息。 语法: 参数: servername, servicename, optionname, optionvalues不在解释。只谈一下这个命令提供的数值。 Optionname--Optionvalues type=----driver, service, all state=----active, inactive, all bufsize=--(numeric values) ri=----(numeric values) Optionvalues Comments SC QUERY命令可以显示SERVICE_STATUS结构的内容。 下面是SERVICE_STATUS结构相应的信息: 在启动计算机后,使用SC QUERY命令会告诉你是否,或者不是一个启动服务的尝试。如果这个服务成功启动,WIN32_EXIT_CODE区间会将会包含一个0,当尝试不成功时,当它意识到这个服务不能够启动时,这个区间也会提供一个退出码给服务。 例子 查询“NewService'服务状态,键入: sc query NewService 显示一下信息: SERVICE_NAME: NewService 注意,这里存在一个给这个服务的退出码,即使这个服务部不在运行,键入net helpmsg 1077,将会得到对1077错误信息的说明: 上次启动之后,仍未尝试引导服务。 所以,这里我想说一句,希望大家可以活用net helpmsg,这会对你的学习有很大的帮助。 下面在对SC query的命令在说明一下: 列举活动服务和驱动程序状态,使用以下命令: 显示messenger服务,使用以下命令: 只列举活动的驱动程序,使用以下命令: 列举Win32服务,使用以下命令: 列举所有的服务和驱动程序,使用以下命令: 用50 byte的缓冲区来进行列举,使用以下命令: 在恢复列举时使用index=14,使用以下命令: 列举所有的交互式服务,使用以下命令: |