首页 > 服务器学习 > windows > windows中的sc控制服务命令
2018
05-08

windows中的sc控制服务命令

一.SC使用这样的语法:
1.SC [Servername] command Servicename [Optionname= Optionvalues] 
2.SC [command] 
这里使用第一种语法使用SC,使用第二种语法显示帮助信息,除了一个命令,sc query,这会导出该系统中当前正在运行的所有服务和驱动程序的状态。 
Servername 可选择:可以使用双斜线,如\\myserver,也可以是\\192.168.1.223来操作远程计算机。如果在本地计算机上操作就不用添加该参数。 
Command 
下面列出SC可以使用的命令。 
config----改变一个服务的配置如sc config Servicename start=auto(自动)/demand(手动)/disabled (禁用)
continue--对一个服务送出一个继续控制的要求。 
control----对一个服务送出一个控制。 
create----创建一个服务。(增加到注册表中) 
delete----删除一个服务。(从注册表中删除) 
EnumDepend--列举服务的从属关系。 
GetDisplayName--获得一个服务的显示名称。 
GetKeyName--获得一个服务的服务键名。 
interrogate--对一个服务送出一个询问控制要求。
lock--锁住服务数据库 
pause----对一个服务送出一个暂停控制要求。 
qc----询问一个服务的配置。 
query----询问一个服务的状态,也可以列举服务的状态类型。 
start----启动一个服务,系统服务也可以使用net start Servicename来启动。 
stop----对一个服务送出一个停止的要求,系统服务也可以使用net stop Servicename来启动。
当你使用start命令时,你可以传递一些参数(arguments)给服务的主函数,但是不是给服务进程的主函数。
Servicename 
在注册表中为service key制定的名称。注意这个名称是不同于显示名称的(这个名称可以用net start和服务控 
制面板看到),而SC是使用服务键名来鉴别服务的。 
Optionname
这个optionname和optionvalues参数允许你指定操作命令参数的名称和数值。在操作名称和等号之间是没有空格,在等号和值之间必须有一个空格,如start= optionvalues,这个很重要。
如果你想要看每个命令的可以用的optionname及对应的optionvalues,你可以使用sc command查看帮助。
二.SC create
这个命令可以在注册表和服务控制管理数据库建立一个入口。 
语法1 
sc [servername] create Servicename [Optionname= Optionvalues] 
这里的servername,servicename,optionname,optionvalues和上面的一样,这里就不多说了。这里我们详细说 
明一下optionname和对应的optionvalues。 
描述 
type=----own, share, interact, kernel, filesys 
关于建立服务的类型,选项值包括驱动程序使用的类型,默认是share。 
start=----boot, sys tem, auto, demand, disabled 
关于启动服务的类型,选项值包括驱动程序使用的类型,默认是demand(手动)。 
error=----normal, severe, critical, ignore 
当服务在导入失败错误的严重性,默认是normal。 
binPath=--(string) 
服务二进制文件的路径名,这里没有默认值,这个字符串是必须设置的。 
group=----(string) 
这个服务属于的组,这个组的列表保存在注册表中的ServiceGroupOrder下。默认是nothing。 
tag=----(string) 
如果这个字符串被设置为yes,sc可以从CreateService call中得到一个tagId。然而,SC并不显示这个标签,所 
以使用这个没有多少意义。默认是nothing 
depend=----(space separated string)有空格的字符串。 
在这个服务启动前必须启动的服务的名称或者是组。 
obj=----(string) 
账号运行使用的名称,也可以说是登陆身份。默认是localsys tem 
Displayname=--(string) 
一个为在用户界面程序中鉴别各个服务使用的字符串。 
password=--(string) 
一个密码,如果一个不同于localsystem的账号使用时需要使用这个。 
下面这个例子在计算机上建立叫test的自动运行服务。 
C:\WINDOWS\system32>sc create test binPath= "D:\test\test.exe" type= own start= auto 
[SC] CreateService SUCCESS 
重启后生效
删除test服务 
C:\WINDOWS\system32>sc delete test binPath= "D:\test\test.exe" type= own start= auto 
[SC] DeleteService SUCCESS
三. SC QC
这个SC QC“询问配置”命令可以列出一个服务的配置信息和QUERY_SERVICE_CONFIG结构。 
语法1 
sc [Servername] qc Servicename [Buffersize] 
Buffersize,可选择的,列出缓冲区的尺寸。 
SC QC命令显示了QUERY_SERVICE_CONFIG结构的内容。 
以下是QUERY_SERVICE_CONFIG相应的区域。 
TYPE------dwServiceType 
START_TYPE----dwStartType 
ERROR_CONTROL----dwErrorControl 
BINARY_PATH_NAME--lpBinaryPathName 
LOAD_ORDER_GROUP--lpLoadOrderGroup 
TAG------dwTagId 
DISPLAY_NAME----lpDisplayName 
DEPENDENCIES----lpDependencies 
SERVICE_START_NAME--lpServiceStartName
下面这个例子询问了在上面例子中建立的“test”服务的配置: 
sc qc 
sc显示下面的信息: 
SERVICE_NAME: test 
        TYPE               : 10 WIN32_OWN_PROCESS 
        START_TYPE         : 2   AUTO_START 
        ERROR_CONTROL      : 1   NORMAL 
        BINARY_PATH_NAME   : D:\test\ 
        LOAD_ORDER_GROUP   : 
        TAG                : 0 
        DISPLAY_NAME       : test 
        DEPENDENCIES       : 
        SERVICE_START_NAME : LocalSystem 
test有能力和其他的服务共享一个进程。这个服务 不依靠与其它的的服务,而且运行在lcoalsystem的安全上下关系中。这些都是调用QueryServiceStatus基本的返回,如果还需要更多的细节届时,可以看看API函数文件。
四.SC QUERY 
SC QUERY命令可以获得服务的信息。 
语法: 
sc [Servername] query { Servicename | ptionname= Optionvalues... } 
参数: 
type=----driver, service, all 列举服务的类型,默认是service 
state=----active, inactive, all 列举服务的状态,默认是active 
bufsize=--(numeric values) 列举缓冲区的尺寸,默认是1024 bytes 
ri=----(numeric values) 但开始列举时,恢复指针的数字,默认是0 
SC QUERY命令可以显示SERVICE_STATUS结构的内容。 
下面是SERVICE_STATUS结构相应的信息: 
TYPE------dwServiceType 
STATE------dwCurrentState, dwControlsAccepted 
WIN32_EXIT_CODE----dwWin32ExitCode 
SERVICE_EXIT_CODE--dwServiceSpecificExitCode 
CHECKPOINT----dwCheckPoint 
WAIT_HINT----dwWaitHint
在启动计算机后,使用SC QUERY命令会告诉你是否,或者不是一个启动服务的尝试。如果这个服务成功启动,WIN32_EXIT_CODE区间会将会包含一个0,当尝试不成功时,当它意识到这个服务不能够启动时,这个区间也会提供一个退出码给服务。 
如查询“test'服务状态,键入: 
sc query test 
显示一下信息:
SERVICE_NAME: test 
        TYPE               : 10 WIN32_OWN_PROCESS 
        STATE              : 1 STOPPED 
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN 
        WIN32_EXIT_CODE    : 0 (0x0) 
        SERVICE_EXIT_CODE : 0 (0x0) 
        CHECKPOINT         : 0x0 
        WAIT_HINT          : 0x0 
这里存在一个给这个服务的退出码,即使这个服务不在运行,键入net helpmsg WIN32_EXIT_CODE值,将会得到对状态码错误信息的说明: 
下面在对SC query的命令在说明一下: 
列举活动服务和驱动程序状态,使用以下命令: 
sc query 
显示messenger服务,使用以下命令: 
sc query messenger 
只列举活动的驱动程序,使用以下命令: 
sc query type= driver 
列举Win32服务,使用以下命令: 
sc query type= service 
列举所有的服务和驱动程序,使用以下命令: 
sc query state= all 
用50 byte的缓冲区来进行列举,使用以下命令: 
sc query bufsize= 50 
在恢复列举时使用index=14,使用以下命令: 
sc query ri=14 
列举所有的交互式服务,使用以下命令: 
sc query type= service type= interact
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。