[TOC]

0x00 基础语法描述:SC 命令是用于与服务控制管理器通信的命令行程序.

语法参数:

代码语言:javascript复制sc [command] [service name] #选项 的格式为 "\\ServerName"

sc config [service name]

#sc二级命令

query-----------查询服务的状态,或枚举服务类型的状态。

queryex---------查询服务的扩展状态,或枚举服务类型的状态。

start-----------启动服务。

pause-----------向服务发送 PAUSE 控制请求。

interrogate-----向服务发送 INTERROGATE 控制请求。

continue--------向服务发送 CONTINUE 控制请求。

stop------------向服务发送 STOP 请求。

config----------更改服务的配置(永久)。

description-----更改服务的描述。

failure---------更改服务失败时执行的操作。

failureflag-----更改服务的失败操作标志。

sidtype---------更改服务的服务 SID 类型。

privs-----------更改服务的所需权限。

qc--------------查询服务的配置信息。

qdescription----查询服务的描述。

qfailure--------查询失败时服务执行的操作。

qfailureflag----查询服务的失败操作标志。

qsidtype--------查询服务的服务 SID 类型。

qprivs----------查询服务的所需权限。

qtriggerinfo----查询服务的触发器参数。

qpreferrednode--查询首选的服务 NUMA 节点。

delete----------(从注册表)删除服务。

create----------创建服务(将其添加到注册表)。

control---------向服务发送控制。

sdshow----------显示服务的安全描述符。

sdset-----------设置服务的安全描述符。

showsid---------显示相应于假定名称的 SID 字符串。

triggerinfo-----配置服务的触发器参数。

preferrednode---设置首选的服务 NUMA 节点。

GetDisplayName--获取服务的 DisplayName

GetKeyName------获取服务的 ServiceKeyName。

EnumDepend------枚举服务的依存关系。Tips : 在 PowerShell 中sc 是 cmdlet Set-Content 的别名,应该这样使用加上 .exe 才能正常使用。

0x01 sc 命令create描述: 创建一个自启/手动开启服务并写入注册表之中;

代码语言:javascript复制用法:sc create [service name] [binPath= ] ...

#注意: 选项名称包括等号。等号和值之间需要一个空格。

type=

(默认 = own)

start=

(默认 = demand)

error=

(默认 = normal)

binPath= <.exe 文件的 BinaryPathName>

group=

tag=

depend= <依存关系(以 / (斜杠)分隔)>

obj=

(默认= LocalSystem)

DisplayName= <显示名称>

password= <密码>实例案例:

代码语言:javascript复制# 安装服务:NewService为创建的服务名,binPath后面是运行exe文件的所在路径

sc create NewService binPath="C:\Debug\win32srvDemo.exe"

# 服务自动开启某个程序(type共享,start启动方式自动,displayname服务显示名称描述)

sc create NewService binPath= "D:\Debug\start1.bat -config 1.ini" type=share start= "auto" displayname= "BWJXServices"

# Prometheus Metrics Windows Nodes Services

sc create prometheus_windows_exporter_service binPath= "d:\pro\windows_exporter-0.16.0-amd64.exe --config.file=d:\pro\config.yml" start= "auto" displayname= "prometheus_windows_exporter_service"config描述:配置服务启动方式或者禁用服务,它有三种状态AUTO/DEMAND/DISABLED;

基础案例:

代码语言:javascript复制#设置服务的集中方式

sc config 服务名 start= AUTO (自动)

sc config 服务名 start= DEMAND (手动)

sc config 服务名 start= DISABLED (禁用)

#将智能卡服务禁用

sc config SCardSvr start= disabled

sc config SCPolicySvc start= disabled

#在XP系统中开机便会自动启动:

sc config test3 start=AUTOstart描述:用来开启已存在的服务

用法参数:

代码语言:javascript复制```

**基础案例:**

```bash

sc start NewServicestop描述:用来停止已开启的服务

用法参数:

代码语言:javascript复制```

**基础案例:**

```bash

sc stop NewServicedelete描述:用来删除已存在的服务

基础语法:

代码语言:javascript复制sc delete NewService基础案例:

代码语言:javascript复制sc delete "Service Name"qc描述:查询服务的配置信息 (dependencies 依赖)

代码语言:javascript复制sc qc NewService基础案例:

代码语言:javascript复制sc qc Spooler

sc qc upnphostWeiyiGeek.

0x02 入坑&出坑问题1.在注册***WinService服务时,再使用 “sc delete 服务器名称” 命令删除服务就出现“指定的服务已经标记为删除”的异常。问题原因:出现上述原因是运行删除服务项命令的时候,服务管理窗口未关闭引起的。

解决办法: 关闭服务管理窗口,重新删除、安装服务项即可。