DOS脚本梳理已发布文章 :
SC命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。
声明一下: 小编是从微软官网上查的资料(https://technet.microsoft.com/zh-cn/library/cc772676#BKMK_config), 只是通过自己的理解进行测试并插入小编的测试截图, 希望对大家有用
Win7及其以上版本当然也能用
SC命令主要的几个功能:
1. 更改服务的启动状态(这是比较有用的一个功能) ,可以设置存储在注册表中的服务属性,以控制如何在启动时启动服务应用程序,以及如何将其作为后台程序运行。即更改服务的启动状态
2. 删除服务(除非对自己电脑的软、硬件所需的服务比较清楚,否则不建议删除任何系统服务,特别是基础服务)
3. 停止或启动服务(功能上类似于net stop/start,但速度更快且能停止的服务更多)
4. SC可以 检索和设置有关服务的控制信息。可以使用 SC.exe 来测试和调试服务程序
5. 可以创建批处理文件来调用不同的 SC 命令,以自动启动或关闭服务序列。
说白了: SC.exe提供的功能类似于“控制面板”中“管理工具”项中的“服务”
获取SC的帮助文档 :
在 cmd 窗口中执行 SC 命令即可获取其帮助文档内容, 从帮助文档中可以看到, SC下面还有很多个子命令, 所以, 除 SC Query 外, 其它命令的帮助文档的获取方式, 就是在CMD中执行 SC + 子命令名 就可以获取到.
值得注意的一点: 因为SC命令操作的是系统服务, 所以最好在管理员权限下操作.
SC命令帮助
语法体: sc <ServerName> [command] [service name] <option1> <option2>...
命令行语法键
下表描述了用于指示命令行语法的标记。
表示法 | 说明 |
---|---|
不带方括号或大括号的文本 | 您必须键入如下所示的项目 |
< 尖括号内的文本 > | 您必须为其提供值的占位符 |
[方括号内的文本] | 可选的项目 |
{大括号内的文本} | 一组所需的项目。选择一个 |
竖线 (|) | 互斥项 ; 的分隔符选择一个 |
省略号 (…) | 可重复的项目 |
ServerName: 指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”),无此参数则默认为本地.
[command]: SC的子命令
[service name]: 服务名称(不一定是显示的名称)
SC命令不能单独使用,必须和其它的命令结合起来一起使用。
注意注意再注意: 每个参数项=号后面必须有一个空格, 再接参数值. 如: sc query type= driver type= interact
声明: 小编是一个个的去写的实例, 不敢误导众友人, 大多理论文本来自微软官方, 我是边理解边实验, 不懂的地方也有标注. 由于涉及对微软系统更加深入了点, 命令及参数以小编的水平是稍复杂.
至于条友们是否能看的下去, 嘿嘿 ,感觉肯定收藏的占9成.
(1) sc lock -----锁定“服务控制管理器”的数据库。
语法
sc [ServerName] lock
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
/?
-
在命令提示符下显示帮助。
备注
-
锁定“服务控制管理器”的数据库会阻止启动任何服务。如果要确保服务在停止之后不会启动,请使用这个命令。这可以使您不受干扰地进行一些操作(例如,删除服务)。
-
使用 lock 操作锁定“服务控制管理器”的数据库,然后通过键入 u 来使数据库解锁。也可停止锁定数据库的进程。
sc lock操作演示
(2) sc querylock -----查询和显示“服务控制管理器”数据库的锁定信息。
sc querylock 信息中几个参数的意思
解锁后的状态信息
(3) sc query-----------查询服务的状态(当前本机所有的服务状态信息),或枚举服务类型的状态。
获得和显示关于指定的服务、驱动程序、服务类型或驱动程序类型的信息
语法(此类内容看不懂就往下滑, 可以看实例演示)
Sc [ServerName] query [ServiceName] [type= {driver | service | all}] [type= {own | share | interact | kernel | filesys | rec | adapt}] [state={active | inactive | all}] [bufsize= BufferSize] [ri= ResumeIndex] [group= GroupName]
下表描述了用于指示命令行语法的标记。
表示法 | 说明 |
---|---|
不带方括号或大括号的文本 | 您必须键入如下所示的项目 |
< 尖括号内的文本 > | 您必须为其提供值的占位符 |
[方括号内的文本] | 可选的项目 |
{大括号内的文本} | 一组所需的项目。选择一个 |
竖线 (|) | 互斥项 ; 的分隔符选择一个 |
省略号 (…) | 可重复的项目 |
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。如果要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。此 query 参数不与其他的 query 参数结合使用(除了 ServerName)。
-
type= {driver | service | all}
-
指定需要枚举的内容。默认类型为 service。
值 描述 driver
指定仅枚举驱动程序。
service
指定仅枚举服务。
all
指定同时枚举驱动程序和服务。
-
type= {own | share | interact | kernel | filesys | rec | adapt}
-
指定要枚举的服务类型或驱动程序类型。
值 描述 own
服务以其自身的进程运行。不与其他服务共享可执行文件。这是默认值。
share
服务作为共享进程运行。与其他服务共享可执行文件。
interact
服务可以与桌面交互,接收用户的输入。交互服务必须在 LocalSystem 帐户下运行。
kernel
驱动程序。
filesys
文件系统驱动程序。
-
state= {active | inactive | all}
-
指定要枚举的服务的已开始状态。默认状态是 active。
值 描述 active
指定所有的活动服务。
inactive
指定所有暂停或停止的服务。
all
指定所有服务。
-
bufsize= BufferSize
-
以字节为单位指定枚举缓冲区的大小。默认大小为 1024 字节。当从查询返回的显示结果超过 1024 个字节时,增加枚举缓冲区的大小。
-
ri= ResumeIndex
-
指定开始或继续枚举的索引号。默认值为 0。 在查询返回的信息超过默认缓冲区能够显示的大小时,请与 bufsize= 参数结合使用这个参数。
-
group= GroupName
-
指定要枚举的服务组。默认设置为所有组。
-
/?
-
在命令提示符下显示帮助。
备注
-
如果参数及其值之间没有空格,(例如,是 type= own,而不是 type=own),则操作会失败。
-
query 操作可以显示有关服务的下列信息:SERVICE_NAME(服务的注册表子项名)、TYPE、STATE(以及不可用的状态)、WIN32_EXIT_B、SERVICE_EXIT_B、CHECKPOINT 和 WAIT_HINT。
-
在某些情况下,type= 参数可以使用两次。type= 参数的第一次出现指定是否查询服务、驱动器或所有这些项。type= 参数的第二次出现指定一个由 create 操作进一步缩小查询范围的类型。
-
当 query 命令的显示结果超过了枚举缓冲区的大小时,显示类似于以下内容的消息:
Enum: more data, need 1822 bytes start resume at index 79
要显示剩余的 query 信息,请重新运行 query,将 bufsize= 设置为所需的字节数,并将 ri= 设置为指定的索引。例如,在命令行键入下面的指令会显示剩余的输出:
sc query bufsize= 1822 ri= 79
SC Query 获取本机或远程主机的所有服务的状态信息
SERVICE_NAME: 服务名称(可用于服务操作)
DISPLAY_NAME: 服务对外显示名称(可自定义, 但不能用于操作服务)
TYPE= {DRIVER (驱动)| SERVICE(服务, 默认) | ALL(所有)} 指定需要枚举的内容。默认类型为 service。
TYPE= {own | share | interact | kernel | filesys | rec | adapt} 指定要枚举的服务类型或驱动程序类型。如上图中的(interactive) 表示此服务可交互, 属交互类型
STATE= {ACTIVE| INACTIVE| ALL}指定要枚举的服务的已开始状态。默认状态是 active。
WIN32_EXIT_CODE: 主线程退出码
SERVICE_EXIT_CODE: 服务退出码
注意,这里存在一个给这个服务的退出码,即使这个服务部不在运行,键入net helpmsg 1077,将会得到对1077错误信息的说明:
CHECKPOINT: 检查点, 可以提供一个关于在程序停止时还要沿着初始化继续前进多久的准确报告。
WAIT_HINT: 等待指示
如上图中的: (STOPPABLE, PAUSABLE, IGNORES_SHUTDOWN) 这个信息显示此服务可以接受的控制命令,上面这个就是//可停止//可暂停//忽略关机
示例
下面的示例显示了如何使用 sc query 命令:
sc query 列举活动服务和驱动程序状态(列出所有的服务,同下面的sc query all, 建议实操一下)
sc query 360EntClientSvc 显示360EntClientSvc服务的状态信息
sc query type= driver 只列举活动的驱动程序(仔细看, 每个参数值前都有一个空格的哦)
sc query type= service 列举Win32服务
sc query state= all 列举所有的服务和驱动程序(列出所有的服务)
sc query bufsize= 50 用50 byte的缓冲区来进行列举
sc query bufsize= 98 ri= 469
sc query ri= 14 在恢复列举时使用index=14(没搞懂, 只能在打印列表的起始位置上对比一下)
sc query ri= 14, more就是多页显示, 请动手对比这个命令有无的区别
sc query ri= 56
sc query type= service type= interact 列举所有的交互式WIN32服务
sc query type= service type= interact
因为这里勾选了 "允许服务与桌面交互" 所以在 TYPE 中有显示(interactive)
这个语音服务因为 "允许服务与桌面交互" 未勾选, 所以CMD中没有(interacitve)
sc query type= driver group= ndis 列出所有属于于ndis服务组的所有驱动程序
sc query type=driver group=ndis
ndis服务组列表
(4) sc queryex---------查询服务的扩展状态,或枚举服务类型的状态。
获得和显示关于指定的服务、驱动程序、服务类型或驱动程序类型的 扩展信息(注意这里是扩展信息)。
语法
Sc [ServerName] queryex [type= {driver | service | all}] [type= {own | share | interact | kernel | filesys | rec | adapt}] [state= {active | inactive | all}] [bufsize= BufferSize] [ri= ResumeIndex][group= GroupName]
下表描述了用于指示命令行语法的标记。
表示法 | 说明 |
---|---|
不带方括号或大括号的文本 | 您必须键入如下所示的项目 |
< 尖括号内的文本 > | 您必须为其提供值的占位符 |
[方括号内的文本] | 可选的项目 |
{大括号内的文本} | 一组所需的项目。选择一个 |
竖线 (|) | 互斥项 ; 的分隔符选择一个 |
省略号 (…) | 可重复的项目 |
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。此 queryex 参数不与 ServerName 之外的任何其他 queryex 参数结合使用。
-
type= {driver | service | all}
-
指定需要枚举的内容。默认类型为 service。
值 描述 driver
指定仅枚举驱动程序。
service
指定仅枚举服务。
all
指定同时枚举驱动程序和服务。
-
type= {own | share | interact | kernel | filesys | rec | adapt}
-
指定要枚举的服务类型或驱动程序类型。
值 描述 own
服务以其自身的进程运行。不与其他服务共享可执行文件。这是默认值。
share
服务作为共享进程运行。与其他服务共享可执行文件。
interact
服务可以与桌面交互,接收用户的输入。交互服务必须在 LocalSystem 帐户下运行。
kernel
驱动程序。
filesys
文件系统驱动程序。
-
state= {active | inactive | all}
-
指定要枚举的服务的已开始状态。默认状态是 active。
值 描述 active
指定所有的活动服务。
inactive
指定所有暂停或停止的服务。
all
指定所有服务。
-
bufsize= BufferSize
-
以字节为单位指定枚举缓冲区的大小。默认大小为 1024 字节。
-
ri= ResumeIndex
-
指定开始或继续枚举的索引号。默认值为 0。
-
group= GroupName
-
指定要枚举的服务组。默认设置为所有组。
-
/?
-
在命令提示符下显示帮助。
备注
-
如果参数及其值之间没有空格,(例如,是 type= own,而不是 type=own),则操作会失败。
Enum: more data, need 2130 bytes start resume at index 75
-
要显示剩余的 queryex 信息,请重新运行 queryex,将 bufsize= 设置为所需的字节数,并将 ri= 设置为指定的索引。例如,在命令行键入下面的指令会显示剩余的输出:
sc queryex bufsize= 2130 ri= 75
-
queryex 操作可以显示有关服务的下列信息:SERVICE_NAME(服务的注册表子项名)、TYPE、STATE(以及不可用的状态)、WIN32_EXIT_B、SERVICE_EXIT_B、CHECKPOINT、WAIT_HINT、PID 和 FLAGS。
-
在某些情况下,type= 参数可以使用两次。type= 参数的第一次出现指定是否查询服务、驱动器或所有这些项。type= 参数的第二次出现指定一个由 create 操作进一步缩小查询范围的类型。
-
当 queryex 命令的显示结果超过了枚举缓冲区的大小时,显示类似于以下内容的消息:
示例
下面的示例显示了如何使用 sc queryex 命令:
sc queryex 360EntClientSvc
就是可以多看到两个属性
sc queryex group= "ndis"
(5) sc start-----------启动服务。
(6) sc pause-----------向服务发送 PAUSE 控制请求。
(7) sc stop------------向服务发送 STOP 请求。
(8) sc continue--------向服务发送 CONTINUE 控制请求。
(9) sc interrogate-----向服务发送 INTERROGATE 控制请求,会导致该服务使用“服务控制管理器”更新其状态(没能完全理解其作用, 也没有测试对比出来, 有懂的烦请指点一下)。
(10) sc config----------更改服务的配置(永久)。
修改注册表和“服务控制管理器”数据库中服务项目的值。
语法
Sc [ServerName] config [ServiceName] [type= {own | share | kernel | filesys | rec | adapt | interacttype= {own | share}}] [start= {boot | system | auto | demand | disabled}] [error= {normal | severe | critical | ignore}] [binpath= BinaryPathName] [group= LoadOrderGroup] [tag= {yes | no}] [depend= dependencies] [obj={AccountName | ObjectName}] [displayname= DisplayName] [password= Password]
下表描述了用于指示命令行语法的标记。
表示法 | 说明 |
---|---|
不带方括号或大括号的文本 | 您必须键入如下所示的项目 |
< 尖括号内的文本 > | 您必须为其提供值的占位符 |
[方括号内的文本] | 可选的项目 |
{大括号内的文本} | 一组所需的项目。选择一个 |
竖线 (|) | 互斥项 ; 的分隔符选择一个 |
省略号 (…) | 可重复的项目 |
参数
-
ServerName
-
指定服务所在的远程服务器的名称。名称必须采用通用命名约定 (UNC) 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
type= {own | share | kernel | filesys | rec | adapt | interacttype= {own | share}}
-
指定服务类型。
值 描述 own
服务以其自身的进程运行。不与其他服务共享可执行文件。这是默认值。
share
服务作为共享进程运行。与其他服务共享可执行文件。
kernel
驱动程序。
filesys
文件系统驱动程序。
rec
文件系统识别驱动程序(标识计算机上使用的文件系统)。
adapt
适配器驱动程序(标识键盘、鼠标、磁盘驱动器这样的硬件项)。
interact
服务可以与桌面交互,接收用户的输入。交互服务必须在 LocalSystem 帐户下运行。该类型必须与 type= own 或 type= shared(例如,type= interact type= own)结合使用。自身使用 type= interact将会产生参数无效的错误。
-
start= {boot | system | auto | demand | disabled}
-
指定服务的启动类型。
值 描述 boot
由启动加载程序加载的设备驱动程序。
system
在核心初始化过程中启动的设备驱动程序。
auto
每次计算机重新启动时都会自动启动、并且即使无人登录到计算机也能正常运行的服务。
demand
必须手动启动的服务。如果没有指定 start=,则此项即为默认值。
disabled
不能启动的服务。要启动禁用的服务,应将启动类型更改为其他值。
-
error= {normal | severe | critical | ignore}
-
如果在启动过程中,服务启动失败,则指定错误的严重性。
值 描述 normal
将记录错误,并且显示消息对话框,通知用户服务启动失败。启动将继续。这是默认设置。
severe
记录错误(如果存在)。计算机尝试以最新的有效配置重新启动。这可能导致计算机能够重新启动,但服务却仍然无法运行。
critical
记录错误(如果存在)。计算机尝试以最新的有效配置重新启动。如果上次已知正确的配置失败,启动也将失败,启动进程将以停止错误而中止。
ignore
错误已记录,启动继续。记录错误超出在事件日志的范围,不再给用户作出提示。
-
binpath= BinaryPathName
-
指定指向服务二进制文件的路径。
-
group= LoadOrderGroup
-
指定该服务所属组的名称。组列表存储在注册表的HKLMSystemCurrentControlSetControlServiceGroupOrder 子项中。默认设置为空值。
-
tag= {yes | no}
-
指定是否在 CreateService 调用中获得 TagID。标记仅用于引导启动或系统启动驱动程序。
-
depend= dependencies
-
指定必须在此项服务之前启动的服务或组的名称。名称以正斜杠 (/) 分隔(看样子可以有多个前提服务)。
-
obj= {AccountName | ObjectName}
-
指定运行服务将使用的帐户名,或指定运行驱动程序将使用的 Windows 驱动程序对象名。默认设置为 LocalSystem。
-
displayname= DisplayName
-
指定一个可以在用户界面程序中用于为用户标识服务的友好的、有意义的名称。例如,一项服务的子项名是对用户毫无意义的 wuauserv,而显示的名称是“自动更新”。
-
password= Password
-
指定一个密码。如果使用了非 LocalSystem 的帐户,则此项是必需的。
-
/?
-
在命令提示符下显示帮助。
备注
-
如果参数及其值之间没有空格,(例如,是 type= own,而不是 type=own),则操作会失败。
sc config 的帮助文档
示例
下面的示例显示了如何使用 sc config 命令:
sc config NewService binpath= "ntsd -d c:windowssystem32NewServ.exe"
以上命令是修改 NewService 这个服务的服务程序的绑定路径.
修改服务的启动方式为 手动
全命令示范文本
C:>sc config \远程主机IP或主机名 type= share start= auto error= normal binpath= "d: ewfileabc.exe" group= newGroup tag= yes depend= 所依赖的服务名称,多个请以/符号分隔 obj= 如果此服务必须特殊的用户名在这里输入,否则就使用默认的LocalSystem用户及空密码 password= 特殊用户的密码
sc config 服务名 start=AUTO (自动)
sc config 服务名 start= DEMAND (手动)
sc config 服务名 start= DISABLED(禁用)
小编对上述文本作了个间隔加粗的格式, 以便能区分开. 不懂的请对照上面的参数.
(11) sc descrīption-----更改服务的描述。
设置服务的描述字符串。
语法
Sc [ServerName] description [ServiceName] [Description]
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
描述
-
为指定服务指定描述。如果没有指定字符串,则不会修改该服务的描述。不限制服务描述中可包含的字符数。
-
/?
-
在命令提示符下显示帮助。
示例
下面的示例显示了如何使用 sc description 命令:
sc description 360EntClientSvc "通过CMD中SC命令修改后的内容: 360企业客户端服务"
(12) sc failure---------更改服务失败时执行的操作。
指定服务失败时要采取的措施。
语法
Sc [ServerName] failure [ServiceName] [reset= ErrorFreePeriod] [reboot= BroadcastMessage] [command= CommandLine] [actions= FailureActionsAndDelayTime]
下表描述了用于指示命令行语法的标记。
表示法 | 说明 |
---|---|
不带方括号或大括号的文本 | 您必须键入如下所示的项目 |
< 尖括号内的文本 > | 您必须为其提供值的占位符 |
[方括号内的文本] | 可选的项目 |
{大括号内的文本} | 一组所需的项目。选择一个 |
竖线 (|) | 互斥项 ; 的分隔符选择一个 |
省略号 (…) | 可重复的项目 |
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
reset= ErrorFreePeriod
-
指定没有失败的周期长度(单位为秒),此后失败计数应该重置为 0。这个参数必须与 actions= 参数结合使用。
-
reboot= BroadcastMessage
-
指定服务失败时要广播的消息。
-
command= CommandLine
-
指定服务失败时要运行的命令行。有关在失败时如何运行批处理或 VBS 文件的详细信息,请参阅“注释”。
-
actions= FailureActionsAndDelayTime
-
指定失败操作及其延迟时间(单位为毫秒),以正斜杠 (/) 隔开。以下操作均有效:run、restart 和 reboot。此参数必须与 reset= 参数结合使用。失败后不采取任何操作时,请使用 actions= ""。
-
/?
-
在命令提示符下显示帮助。
备注
-
并非所有服务都允许更改其失败选项。其中一些作为服务集的一部分运行。
-
要在失败时运行批处理文件,请指定 cmd.exe Drive:FileName.bat 为 command=参数,其中 Drive:FileName.bat 是批处理文件的完全合格的名称。
-
要在失败时运行 VBS 文件,请指定 cscript drive:myscript.vbs 为 command= 参数,其中 Drive:myscript.vbs 是脚本文件完全合格的名称。
-
可以将三种不同的操作指定为 actions= 参数,它们将会在服务的第一次、第二次、第三次失败时使用。
-
如果参数及其值之间没有空格,(例如,是 type= own,而不是 type=own),则操作会失败。
示例
下面的示例显示了如何使用 sc failure 命令(小编在这里只对命令实例做解释说明, 没有实验测试):
(1) 如果msftpsvc服务无故障运行30秒失败了, 则5秒后重新启动
sc failure msftpsvc reset= 30 actions= restart/5000
(2) 如果dfs服务无故障运行60秒失败, 则5秒后运行command指定的程序或脚本
sc failure dfs reset= 60 command= c:windowsservices estart_dfs.exe actions= run/5000
(3) 如果dfs服务无故障运行60秒失败, 则30秒后重启计算机
sc failure dfs reset= 60 actions= reboot/30000
(4) 如果dfs服务无故障运行60秒失败, 则30秒后重启计算机, 并广播"因为dfs服务运行失败, 计算机将在30秒后重新启动"
sc failure dfs reset= 60 reboot= "The Distributed File System service has failed.Because of this, the computer will reboot in 30 seconds." actions= reboot/30000
(5) 如果myservice服务无故障运行1小时失败, 则5秒后重启,
第二次无故障运行1小时失败, 则10秒后运行command指定的程序或脚本,
第三次元故障运行1小时失败, 则1分钟后重启计算机机, 同时广播"myservice服务挂掉了, 即将重启电脑"
sc failure myservice reset= 3600 reboot= "MyService crashed -- rebooting machine" command= "%windir%MyServiceRecovery.exe" actions= restart/5000/run/10000/reboot/60000
(13) sc failureflag-----更改服务失败时, 故障恢复操作的标志。
指定在服务停止或因错误失败时,将会触发故障恢复操作。
语法
sc <ServerName> failureflag [<ServiceName>] [<Flag>]
参数
参数 | 说明 |
---|---|
<ServerName> | 指定服务所在的远程服务器的名称。 名称必须使用通用命名约定 (UNC) 格式 (例如内)。 若要在本地运行 SC.exe,忽略此参数。 |
<ServiceName> | 指定由getkeyname操作返回的服务名称。 |
<Flag> | 默认值为0 (无操作)。 如果此参数设置为1,并且用户已配置的服务故障恢复操作,如果服务由于错误而停止恢复操作也会触发。 |
/? | 在命令提示符下显示帮助。 |
备注
如果服务无法正常工作,但通常可以重新正常启动,则设置此标志。
示例
要触发现有的服务故障恢复操作,请键入:
sc failureflag 服务名称 Flag= 1
(14) sc sidtype---------更改服务的服务 SID 类型。
更改服务的服务安全标识符(SID)类型设置。
用法:
sc <server> sidtype [service name] [type]
选项:
type = <none|unrestricted|restricted>
备注:
如果此设置为“unrestricted”,服务控制管理器(SCM)会因为进程中的第一个服务正在启动而在服务进程下次启动时将此服务的 SID 添加至服务进程令牌。此设置仅针对 Win32 用户模式服务有效。
如果此设置为“restricted”,服务控制管理器(SCM)会因为进程中的第一个服务正在启动而在服务进程下次启动时将此服务的 SID 添加至服务进程令牌。
此外,此服务的 SID 也会被添加至进程令牌中的受限 SID 列表,因此该进程令牌将成为一个受限的令牌。有关受限令牌的详细信息,请参见 MSDN。此设置仅针对 Win32 用户模式服务有效。此外,对于共享进程服务,共处于进程中的所有服务的 SID 类型必须都被设为此设置,以便服务生效。
如果此设置为“none”,SCM 不会将服务的 SID 添加至服务进程令牌。
小编对系统的研究不深, 不知其所以然, 如有高手路过, 烦请指点一二, 感谢感谢!
(15) sc privs-----------更改服务的所需权限。
更改服务所需的权限设置。
用法:
sc <server> privs [service name] [privileges]
选项:
privileges = <由正斜杠分隔的权限>[例如: SeBackupPrivilege/SeRestorePrivilege]
没有用到过, 不知其所以然
(16) sc qc--------------查询服务的配置信息。
语法
Sc [ServerName] qc [ServiceName] [BufferSize]
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
BufferSize
-
指定缓冲区大小(以字节为单位)。默认值为 1024 字节。
-
/?
-
在命令提示符下显示帮助。
备注
-
qc 操作可以显示有关服务的下列信息:SERVICE_NAME(服务的注册表子项名称)、TYPE、ERROR_CONTROL、BINARY_PATH_NAME、LOAD_ORDER_GROUP、TAG、DISPLAY_NAME、DEPENDENCIES 和 SERVICE_START_NAME。
-
管理员可以使用 SC 来确定任一服务的二进制名称,并查明它是否与其他服务共享一个进程,在命令行下键入下列命令:
sc qc ServiceName
SC 有助于将 Microsoft 管理控制台 (MMC) 的服务节点中的服务与“系统监视器”中的进程进行匹配。如果二进制名称是 Services.exe,那么服务共享“服务控制器”进程。
Services.exe 启动所有的服务。为节约系统资源,几个为 Windows 开发的 Win32 服务被编写为共享 Services.exe 进程。这些服务不作为独立的进程列在“系统监视器”或“任务管理器”之中。Svchost.exe 也是如此,它是许多操作服务共享的服务主机进程。
因为第三方 Win32 服务也可以配置为共享进程,所以不可能为每一个 Win32 服务创建一个进程。SC 可以用来获得这些服务的配置信息。但是,如果一项服务不与其他服务共享其进程,那么在服务运行时,“系统监视器”中会出现其进程。
-
因为 SC 与包含在 Windows 中的 Services.exe 相比,提供了有关服务的更为详细和准确的信息,所以对于服务开发人员来说,SC 更有用处。Services.exe 可以确定服务是正在运行、已停止还是已暂停。尽管这些工具对于正在平稳运行的已调试应用程序已经足够,但它们提供的有关正开发的服务的信息却会使人误解。例如,正在启动的服务不管其实际运行与否都显示为已启动。
SC 可执行对所有 Windows 服务控制应用编程接口 (API) 函数的调用。通过在命令行下指定这些函数来设置其参数。使用 SC,可以查询服务状态,检索存储在状态结构字段中的值。Services.exe 不能提供服务的完整状态,但 SC 可以显示精确的服务状态,以及最新的检查点号码和等待提示。可以将检查点用作调试工具,原因在于它表明了在程序停止响应之前初始化进行的程度。SC 也可以用来指定远程计算机名,以便于在远程计算机上调用服务 API 函数或查看服务状态结构。
示例
下面的示例显示了如何使用 sc qc 命令:
sc qc \myserver newsrvice
sc qc rpcss 248
(17) sc qdescription----查询服务的描述。
显示服务的描述字符串。
语法
Sc [ServerName] qdescription [ServiceName] [BufferSize]
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
BufferSize
-
指定缓冲区大小(以字节为单位)。默认值为 1024 字节。
-
/?
-
在命令提示符下显示帮助。
示例
下面的示例显示了如何使用 sc qdescription 命令:
sc qdescription rpcss
sc qdescription rpcss 138
(18) sc qfailure--------查询失败时服务执行的操作。
(19) sc qfailureflag----查询服务的失败操作标志。
(20) sc qsidtype--------查询服务的服务 SID 类型。
(21) sc qprivs----------查询服务的所需权限。
(22) sc qtriggerinfo----查询服务的触发器参数。
(23) sc qpreferrednode----查询首选的服务 NUMA 节点。[没有测试成功,失败]
描述:
查询 Win32 服务的首选 NUMA 节点。
此设置仅对系统自身的进程服务有效。
如果此服务没有首选节点设置,则查询将失败。
用法:
sc <server> qpreferrednode [service name]
(24) sc delete----------(从注册表)删除服务。
从注册表中删除服务子项。如果服务正在运行或者另一个进程有一个该服务的打开句柄,那么此服务将标记为删除。
语法
Sc [ServerName] delete [ServiceName]
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
/?
-
在命令提示符下显示帮助。
备注
-
使用“添加或删除程序”删除 DHCP、DNS 或任何其他内置的操作系统服务。“添加或删除程序”不仅会删除该服务的注册表子项,而且还会卸载该服务并删除其所有的快捷方式。
示例
下面的示例显示了如何使用 sc delete 命令:
sc delete newserv
(25) sc create----------创建服务(将其添加到注册表)。
在注册表和“服务控制管理器”中为服务创建子项和项目。
语法
Sc [ServerName] create [ServiceName] [type= {own | share | kernel | filesys | rec | adapt | interacttype= {own | share}}] [start= {boot | system | auto | demand | disabled}] [error= {normal | severe | critical | ignore}] [binpath= BinaryPathName] [group= LoadOrderGroup] [tag= {yes | no}] [depend= dependencies] [obj={AccountName | ObjectName}] [displayname= DisplayName] [password= Password]
下表描述了用于指示命令行语法的标记。
表示法 | 说明 |
---|---|
不带方括号或大括号的文本 | 您必须键入如下所示的项目 |
< 尖括号内的文本 > | 您必须为其提供值的占位符 |
[方括号内的文本] | 可选的项目 |
{大括号内的文本} | 一组所需的项目。选择一个 |
竖线 (|) | 互斥项 ; 的分隔符选择一个 |
省略号 (…) | 可重复的项目 |
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
type= {own| share | kernel | filesys | rec| adapt| interacttype= {own | share}}
-
指定服务类型。默认类型为 type= own。
值 描述 own
服务以其自身的进程运行。不与其他服务共享可执行文件。这是默认值。
share
服务作为共享进程运行。与其他服务共享可执行文件。
kernel
驱动程序。
filesys
文件系统驱动程序。
rec
文件系统识别驱动程序(标识在计算机上使用的文件系统)。
interact
服务可以与桌面交互,接收用户的输入。交互服务必须在 LocalSystem 帐户下运行。该类型必须与 type= own 或 type= shared(例如,type= interact type= own)结合使用。自身使用 type= interact将会产生参数无效的错误。
-
start= {boot | system | auto | demand | disabled}
-
指定服务的启动类型。默认的启动类型是 start= demand。
boot
由启动加载程序加载的设备驱动程序。
system
在核心初始化过程中启动的设备驱动程序。
auto
每次计算机重新启动时都会自动启动、并且即使无人登录到计算机也能正常运行的服务。
demand
必须手动启动的服务。如果没有指定 start=,则此项即为默认值。
disabled
不能启动的服务。要启动禁用的服务,应将启动类型更改为其他值。
-
error= {normal | severe | critical | ignore}
-
如果在启动过程中,服务启动失败,则指定错误的严重性。默认设置为 error= normal。
normal
将记录错误,并且显示消息对话框,通知用户服务启动失败。启动将继续。这是默认设置。
severe
记录错误(如果存在)。计算机尝试以最新的有效配置重新启动。这可能导致计算机能够重新启动,但服务却仍然无法运行。
critical
记录错误(如果存在)。计算机尝试以最新的有效配置重新启动。如果上次已知正确的配置失败,启动也将失败,启动进程将以停止错误而中止。
ignore
错误已记录,启动继续。记录错误超出在事件日志的范围,不再给用户作出提示。
-
binpath= BinaryPathName
-
指定指向服务二进制文件的路径。binpath= 没有默认值,必须提供此字符串。
-
group= LoadOrderGroup
-
指定该服务所属组的名称。组列表存储在注册表的 HKLMSystemCurrentControlSetControlServiceGroupOrder 子项中。默认设置为空值。
-
tag= {yes | no}
-
指定是否在 CreateService 调用中获得 TagID。标记仅用于引导启动或系统启动驱动程序。
-
depend= dependencies
-
指定必须在此项服务之前启动的服务或组的名称。名称以正斜杠 (/) 分隔。
-
obj= {AccountName | ObjectName}
-
指定运行服务将使用的帐户名,或指定运行驱动程序将使用的 Windows 驱动程序对象名。
-
displayname= DisplayName
-
指定用户界面程序用于标识服务的友好名称。
-
password= Password
-
指定一个密码。如果使用了非 LocalSystem 的帐户,则此项是必需的。
-
/?
-
在命令提示符下显示帮助。
备注
-
如果参数及其值之间没有空格,(例如,是 type= own,而不是 type=own),则操作会失败。
示例
下面的示例显示了如何使用 sc create 命令:
sc \myserver create NewService binpath= c:windowssystem32NewServ.exe
sc create NewService binpath= c:windowssystem32NewServ.exe type= share start= auto depend= "+TDI Netbios"
如果条码是从上往读过来的, 参数上应该都不用我多注释了.
小编我试了下 sc create notepad binpath= "D:Program FilesEditPluseditplus.exe" 不可行, 小编程序开发经验不足, 可能后台服务程序, 代码中需要调用特殊的库, 这样生成的程序才可以作为后台, 这一篇文章花了两时间了, 还没有写完.
(26) sc control---------向服务发送控制。
向服务发送控制码。
语法
sc [ServerName] control [ServiceName] [{paramchange | netbindadd | netbindremove | netbindenable | netbinddisable | UserDefinedControlB}]
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
{paramchange | netbindadd | netbindremove | netbindenable | netbinddisable | UserDefinedControlB}
-
指定要发送到服务的控制。
-
/?
-
在命令提示符下显示帮助。
(27) sc sdshow----------显示服务的安全描述符。
(28) sc sdset-----------设置服务的安全描述符。
使用“服务描述符定义语言 (SDDL)”来设置服务的安全描述符。
语法
Sc [ServerName] sdset ServiceName ServiceSecurityDescriptor
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
ServiceSecurityDescriptor
-
在 SDDL 中指定服务描述符。
-
/?
-
在命令提示符下显示帮助。
(29) sc showsid---------显示相应于假定名称的 SID 字符串。
(30) sc triggerinfo-----配置服务的触发器参数。
(31) sc preferrednode---设置首选的服务 NUMA 节点(不懂)。
(32) sc GetDisplayName----获取服务的 DisplayName
(33) sc GetKeyName------获取服务的 ServiceKeyName。
(34) sc EnumDepend------枚举服务的依存关系。
列出只有运行了指定服务才能运行的服务。
语法
Sc [ServerName] enumdepend [ServiceName] [BufferSize]
参数
-
ServerName
-
指定服务所在的远程服务器的名称。该名称必须使用 UNC 格式(“\myserver”)。要在本地运行 SC.exe,请忽略此参数。
-
ServiceName
-
指定由 getkeyname 操作返回的服务名。
-
BufferSize
-
以字节为单位指定枚举缓冲区的大小。默认值为 1024 字节。
-
/?
-
在命令提示符下显示帮助。
备注
-
如果缓冲区不够大,enumdepend 操作只会部分输出依存关系,并指定输出所有依存关系所需的额外缓冲区大小。如果输出被截断,请重新运行该操作并指定更大的缓冲区大小。
示例
下面的示例显示了如何使用 sc enumdepend 命令:
sc enumdepend rpcss 5690
sc enumdepend tapisrv
虽然小编耐着性子, 一个一个的子命令都试了, 但是还有多个指令不确实其实际作用, 创建服务针对的应该是服务类的程序, 就像 360EntClientSvc 这个服务就是服务程序, 不同于 notepad.exe 记事本程序, 记事本程序不被创建为一个服务程序.
SC命令在实际应用中, 主要是用来优化本地系统服务, 将用不到的服务使用批处理一次性的优化掉, 或禁用或手动.