sc 命令是 Windows 操作系统中的一个命令行工具,用于与 Windows 服务控制管理器进行交互。它允许用户创建、删除、启动、停止、查询和配置 Windows 服务。sc 命令提供了对服务的全面管理功能,适用于系统管理员和高级用户。对应等效powershell命令
sc.exe create | Microsoft Learn
使用 SC 控制服务 - Win32 apps | Microsoft Learn
sc Command |
PowerShell Equivalent Command | Description |
|---|---|---|
sc query |
Get-Service |
Query the status of a service. |
sc queryex |
Get-WmiObject -Class Win32_Service |
Query extended status of a service (returns more detailed information). |
sc start |
Start-Service |
Start a service. |
sc pause |
Suspend-Service |
Pause a service. |
sc interrogate |
Send-ServiceCommand -Name <ServiceName> -Command <CommandName> |
Send INTERROGATE command to a service (PowerShell lacks a direct equivalent; use Send-ServiceCommand). |
sc continue |
Resume-Service |
Resume a paused service. |
sc stop |
Stop-Service |
Stop a service. |
sc config |
Set-Service -Name <ServiceName> -StartupType <StartupType> |
Change the configuration of a service. |
sc description |
Set-Service -Name <ServiceName> -Description <Description> |
Set or change the description of a service. |
sc failure |
Set-WmiInstance -Class Win32_Service -Name <ServiceName> -FailureActions <FailureActions> |
Set actions for when a service fails. |
sc failureflag |
Set-WmiInstance -Class Win32_Service -Name <ServiceName> -FailureActionsFlag <FailureFlag> |
Set failure actions flag. |
sc sidtype |
Set-WmiInstance -Class Win32_Service -Name <ServiceName> -SIDType <SIDType> |
Change the service SID type. |
sc privs |
Set-WmiInstance -Class Win32_Service -Name <ServiceName> -RequiredPrivileges <Privileges> |
Set required privileges for a service. |
sc managedaccount |
Set-WmiInstance -Class Win32_Service -Name <ServiceName> -ManagedAccount <ManagedAccount> |
Set the service to use a managed account for the service password. |
sc qc |
Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" |
Query configuration details of a service. |
sc qdescription |
Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" |
Query the description of a service. |
sc qfailure |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object FailureActions` |
sc qfailureflag |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object FailureActionsFlag` |
sc qsidtype |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object SIDType` |
sc qprivs |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object RequiredPrivileges` |
sc qtriggerinfo |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object TriggerInfo` |
sc qpreferrednode |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object PreferredNode` |
sc qmanagedaccount |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object ManagedAccount` |
sc qprotection |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object ProtectionLevel` |
sc quserservice |
`Get-WmiObject -Class Win32_Service -Filter "Name='<ServiceName>'" | Select-Object UserServiceTemplate` |
sc delete |
Remove-Service -Name <ServiceName> |
Delete a service from the registry. |
sc create |
New-Service -Name <ServiceName> -Binary <Path> -Description <Description> |
Create a new service and add it to the registry. |
sc control |
Send-ServiceCommand -Name <ServiceName> -Command <CommandName> |
Send control commands to a service (using Send-ServiceCommand). |
sc sdshow |
Get-ServiceSecurity -Name <ServiceName> |
Show the security descriptor for a service. |
sc sdset |
Set-ServiceSecurity -Name <ServiceName> -Descriptor <SecurityDescriptor> |
Set the security descriptor for a service. |
sc showsid |
Get-ServiceSID -Name <ServiceName> |
Show the SID of a service. |
sc triggerinfo |
Set-ServiceTrigger -Name <ServiceName> -Trigger <TriggerSettings> |
Configure the service's trigger parameters. |
sc preferrednode |
Set-ServicePreferredNode -Name <ServiceName> -Node <NUMA_Node> |
Set the preferred NUMA node for a service. |
sc GetDisplayName |
`Get-Service -Name <ServiceName> | Select-Object DisplayName` |
sc GetKeyName |
`Get-Service -Name <ServiceName> | Select-Object ServiceKeyName` |
sc EnumDepend |
Get-ServiceDependency -Name <ServiceName> |
Enumerate service dependencies. |
C:\Users\Administrator>sc /?
sc 命令是 Windows 操作系统中的一个命令行工具,用于与 Windows 服务控制管理器进行交互。它允许用户创建、删除、启动、停止、查询和配置 Windows 服务。sc 命令提供了对服务的全面管理功能,适用于系统管理员和高级用户。
主要功能
- 创建服务: 使用
sc create命令可以注册新的服务。 - 删除服务: 使用
sc delete命令可以删除已注册的服务。 - 启动和停止服务: 使用
sc start和sc stop命令可以控制服务的运行状态。 - 查询服务状态: 使用
sc query命令可以获取服务的当前状态和配置信息。 - 配置服务: 使用
sc config命令可以更改服务的启动类型、依赖关系等设置。
描述:
SC 是用来与服务控制管理器和服务进行通信的命令行程序。
用法:
sc <server> [command] [service name] <option1> <option2>...
<server> 选项的格式为 "\\ServerName"可通过键入以下命令获取有关命令的更多帮助: "sc [command]"
命令:
sc query-----------查询服务的状态, 或枚举服务类型的状态。
sc queryex---------查询服务的扩展状态, 或枚举服务类型的状态。
sc start-----------启动服务。
sc pause-----------向服务发送 PAUSE 控制请求。
sc interrogate-----向服务发送 INTERROGATE 控制请求。
sc continue--------向服务发送 CONTINUE 控制请求。
sc stop------------向服务发送 STOP 请求。
sc config----------更改服务的配置(永久)。
sc description-----更改服务的描述。
sc failure---------更改失败时服务执行的操作。
sc failureflag-----更改服务的失败操作标志。
sc sidtype---------更改服务的服务 SID 类型。
sc privs-----------更改服务的所需特权。
sc managedaccount--更改服务以将服务帐户密码标记为由 LSA 管理。
sc qc--------------查询服务的配置信息。
sc qdescription----查询服务的描述。
sc qfailure--------查询失败时服务执行的操作。
sc qfailureflag----查询服务的失败操作标志。
sc qsidtype--------查询服务的服务 SID 类型。
sc qprivs----------查询服务的所需特权。
sc qtriggerinfo----查询服务的触发器参数。
sc qpreferrednode--查询服务的首选 NUMA 节点。
sc qmanagedaccount-查询服务是否将帐户与 LSA 管理的密码结合使用。
sc qprotection-----查询服务的进程保护级别。
sc quserservice----查询用户服务模板的本地实例。
sc delete ----------(从注册表中)删除服务。
sc create----------创建服务(并将其添加到注册表中)。
sc control---------向服务发送控制。
sc sdshow----------显示服务的安全描述符。
sc sdset-----------设置服务的安全描述符。
sc showsid---------显示与任意名称对应的服务 SID 字符串。
sc triggerinfo-----配置服务的触发器参数。
sc preferrednode---设置服务的首选 NUMA 节点。
sc GetDisplayName--获取服务的 DisplayName。
sc GetKeyName------获取服务的 ServiceKeyName。
sc EnumDepend------枚举服务依赖关系。
以下命令不需要服务名称:
sc <server> <command> <option>
boot------------(ok | bad)指示是否应将上一次启动另存为最近一次已知的正确启动配置
Lock------------锁定服务数据库
QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
sc start MyService
QUERY 和 QUERYEX 选项:
如果查询命令带服务名称,将返回该服务的状态。其他选项不适合这种情况。如果查询命令不带参数或带下列选项之一,将枚举此服务。
type= 要枚举的服务的类型(driver, service, userservice, all)
(默认 = service)
state= 要枚举的服务的状态 (inactive, all)
(默认 = active)
bufsize= 枚举缓冲区的大小(以字节计)
(默认 = 4096)
ri= 开始枚举的恢复索引号
(默认 = 0)
group= 要枚举的服务组
(默认 = all groups)
语法示例
sc query - 枚举活动服务和驱动程序的状态
sc query eventlog - 显示 eventlog 服务的状态
sc queryex eventlog - 显示 eventlog 服务的扩展状态
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= interact - 枚举所有不活动服务
sc query type= driver group= NDIS - 枚举所有 NDIS 驱动程序
SC 命令的详细功能分类和细化表格。SC 是 Windows 系统中的服务控制工具,允许用户与 Windows 服务交互,包括查询、配置、启动、停止、删除等操作。
| 功能类别 | 命令 | 描述 | 备注 |
|---|---|---|---|
| 服务查询与状态 | sc query |
查询服务的状态。 | 显示服务的运行状态,如运行中、暂停等。 |
sc queryex |
查询服务的扩展状态。 | 返回更详细的服务状态信息,如服务标识符等。 | |
| 服务操作 | sc start |
启动指定服务。 | 启动服务之前,服务必须已创建。 |
sc stop |
停止指定服务。 | 停止一个运行中的服务。 | |
sc pause |
暂停指定服务。 | 服务必须支持暂停功能。 | |
sc continue |
继续已暂停的服务。 | 恢复一个已暂停的服务。 | |
sc interrogate |
向服务发送询问请求,返回当前状态。 | 查询服务当前状态。 | |
| 服务配置管理 | sc config |
修改服务的配置。 | 修改服务的启动类型、依赖项等配置。 |
sc description |
修改服务的描述信息。 | 更新服务的描述字段。 | |
sc failure |
配置服务失败后的处理行为。 | 设置服务失败时的恢复策略(如重启服务等)。 | |
sc failureflag |
设置服务失败时的处理标志。 | 控制服务失败后的动作。 | |
sc sidtype |
修改服务的 SID 类型。 | 配置服务的安全标识符(SID)。 | |
sc privs |
设置服务的权限。 | 配置服务运行所需的特定权限。 | |
sc managedaccount |
配置服务账户为管理密码。 | 配置服务为使用 LSA 管理的账户。 | |
| 服务查询命令 | sc qc |
查询服务的配置信息。 | 显示服务的配置信息,如启动类型、依赖项等。 |
sc qdescription |
查询服务的描述信息。 | 返回服务的描述内容。 | |
sc qfailure |
查询服务的失败处理策略。 | 返回服务的失败恢复策略。 | |
sc qfailureflag |
查询服务的失败标志。 | 显示服务的失败标志。 | |
sc qsidtype |
查询服务的 SID 类型。 | 查询服务的安全标识符(SID)。 | |
sc qprivs |
查询服务的权限配置。 | 返回服务的权限要求。 | |
sc qtriggerinfo |
查询服务的触发信息。 | 显示服务的触发条件和事件。 | |
sc qpreferrednode |
查询服务的首选 NUMA 节点。 | 显示服务使用的首选 NUMA 节点信息。 | |
sc qmanagedaccount |
查询服务是否使用 LSA 管理的账户。 | 检查服务是否使用由 LSA 管理的密码。 | |
sc qprotection |
查询服务的进程保护级别。 | 返回服务的进程保护信息。 | |
sc quserservice |
查询用户服务模板实例。 | 返回与用户服务相关的模板实例信息。 | |
| 服务删除与创建 | sc delete |
删除指定服务。 | 从服务管理器中删除服务,无法恢复。 |
sc create |
创建一个新服务。 | 创建新的服务并将其添加到服务管理器中。 | |
| 服务控制 | sc control |
向服务发送控制请求。 | 允许用户向服务发送特定控制命令,如暂停、继续等。 |
| 服务安全管理 | sc sdshow |
显示服务的安全描述符。 | 显示服务的权限设置和安全描述信息。 |
sc sdset |
设置服务的安全描述符。 | 修改服务的安全权限和访问控制列表(ACL)。 | |
| 服务信息与识别 | sc showsid |
显示服务的 SID(服务标识符)。 | 显示服务对应的 SID 字符串。 |
sc triggerinfo |
配置或查询服务触发参数。 | 配置服务的触发事件与参数。 | |
sc preferrednode |
配置服务的首选 NUMA 节点。 | 设置服务在 NUMA 节点上的运行首选项。 | |
sc GetDisplayName |
获取服务的显示名称。 | 查询服务的 DisplayName 信息。 | |
sc GetKeyName |
获取服务的服务键名称。 | 查询服务的注册表键名称。 | |
sc EnumDepend |
枚举并显示服务的依赖项。 | 查询服务依赖的其他服务。 | |
| 系统配置管理 | sc boot |
指定是否将最后的启动保存为“最后已知的良好配置”。 | 配置系统启动时的恢复选项。 |
| 服务数据库管理 | sc Lock |
锁定服务数据库。 | 防止对服务数据库进行修改。 |
sc QueryLock |
查询服务数据库的锁定状态。 | 查询当前服务数据库是否被锁定。 |
功能分类小结:
- 服务查询与状态管理:涉及查询服务的状态、扩展信息、显示描述等。
- 服务操作管理:用于启动、停止、暂停、恢复服务等操作。
- 服务配置管理:用于修改服务的配置、描述、失败策略、权限等。
- 服务查询命令:查询服务的各种配置信息、权限、触发条件等。
- 服务删除与创建:包括创建和删除服务,管理服务生命周期。
- 服务安全管理:修改或查询服务的安全描述符(ACLs)和权限设置。
- 系统配置管理:管理系统启动时的配置选项。
- 服务数据库管理:锁定服务数据库或查询锁定状态,以防止对服务的修改。
这份细化表格展示了 SC 命令行工具在 Windows 系统中的广泛应用,涵盖了服务管理的各个方面,从查询、操作、配置到安全管理等多个功能类别。
SC 命令:Windows 服务管理的强大工具
在 Windows 操作系统中,sc 命令(Service Control)是一个非常强大的命令行工具,用于管理本地或远程计算机上的服务及驱动程序。通过 sc 命令,你可以方便地启动、停止、查询、创建、删除服务,甚至可以修改服务的配置及其行为。本文将详细介绍一些常见的 sc 命令及其使用方法,帮助你更好地管理 Windows 系统中的服务。
常见的 sc 命令用法
1. 查询服务状态
要查询某个服务的当前状态,可以使用以下命令:
sc query serviceName
其中,serviceName 是你希望查询的服务名称。此命令将返回该服务的当前状态、进程 ID(PID)以及服务的类型等信息。
2. 启动服务
若要启动一个已存在的服务,可以使用以下命令:
sc start serviceName
这会启动指定的服务,前提是该服务已经正确配置并处于停止状态。
3. 停止服务
停止某个正在运行的服务,可以使用:
sc stop serviceName
此命令会发送停止请求,停止指定的服务。
4. 安装服务
若要安装一个新服务,可以使用 sc create 命令,指定服务的名称和可执行文件路径:
sc create serviceName binPath= "C:\path\to\executable.exe" [option1=value1 option2=value2 ...]
serviceName:要创建的服务名称。binPath:服务可执行文件的路径。- 可选参数:你可以通过附加选项来设置服务的其他属性,例如启动类型、显示名称、描述等。
安装服务后,你可以使用 sc start 命令启动它。
5. 卸载服务
若要卸载一个服务,可以使用 sc delete 命令:
sc delete serviceName
该命令会从系统中删除指定的服务。
sc 命令的高级选项
除了上述常见的命令,sc 还提供了许多高级选项,能够帮助你更细致地管理服务。以下是一些常用的命令:
查询服务的详细信息
要查询服务的配置信息,可以使用:
sc qc serviceName
此命令将显示指定服务的配置信息,如二进制文件路径、启动类型等。
更改服务配置
如果你需要永久更改某个服务的配置,可以使用:
sc config serviceName option=value
这允许你修改服务的启动类型、登录帐户等配置。例如:
sc config MyService start= disabled
该命令将 MyService 服务的启动类型设置为禁用。
修改服务描述
使用 sc description 可以修改服务的描述:
sc description serviceName "New Description"
该命令会更新服务的描述信息,帮助管理员更好地了解服务的功能。
修改服务的失败操作
你可以设置服务在失败时的行为,使用以下命令:
sc failure serviceName reset= 60 actions= restart/5000
这会配置当服务失败时,自动重新启动服务,并在 5 秒钟内尝试。
查询服务的依赖关系
要查询服务的依赖关系,可以使用:
sc qc serviceName
这个命令会显示服务所依赖的其他服务和驱动程序。
sc 命令语法示例
查询服务
查询 eventlog 服务的状态:
sc query eventlog
查询所有活动服务:
sc query state= all
查询仅活动的驱动程序:
sc query type= driver
查询某个服务的扩展状态:
sc queryex eventlog
启动服务
启动 MyService 服务:
sc start MyService
停止服务
停止 MyService 服务:
sc stop MyService
安装服务
安装新服务 MyService,并指定其可执行文件路径:
sc create MyService binPath= "C:\path\to\myservice.exe"
删除服务
删除 MyService 服务:
sc delete MyService
其他有用命令选项
sc queryex:显示服务的扩展状态,提供比sc query更多的详细信息。sc pause:向服务发送PAUSE请求,暂停服务。sc continue:向服务发送CONTINUE请求,恢复已暂停的服务。sc control:向服务发送控制请求,如暂停、继续、停止等。sc sdshow:显示服务的安全描述符。sc sdset:设置服务的安全描述符。sc showsid:显示与任意名称对应的服务 SID 字符串。
sc 命令是 Windows 操作系统中一个非常有用的工具,可以帮助管理员快速而高效地管理服务。无论是查询服务状态、启动/停止服务,还是配置服务属性,sc 都提供了丰富的命令选项,适用于各种场景。掌握这些常用的 sc 命令,可以让你更加得心应手地进行系统服务的管理。
sc sdset 命令用于设置 Windows 服务的安全描述符。安全描述符(Security Descriptor,简称 SD)包含了对服务对象的安全信息,决定了哪些用户或组具有访问该服务的权限,以及这些权限的详细设置。
在你的例子中:
sc sdset servername d:(a;;ka;;;wd)
我们可以拆解它的各个部分来进行详细说明:
命令格式
sc sdset <service_name> <sd_string>
service_name: 指定服务的名称,或者在此示例中是scmanager(表示 SCM,即服务控制管理器)。sd_string: 是一个用 DACL(Discretionary Access Control List,分配控制列表)定义的安全描述符字符串。
安全描述符(SD)字符串结构
在 sc sdset 中,安全描述符字符串的格式为:
d:(DACL)
d:表示安全描述符中的 DACL(Discretionary Access Control List),它定义了允许或拒绝对对象的访问。DACL是一种列表,其中每个元素称为 访问控制条目(ACE)。ACE 定义了某个特定用户或组对服务的访问权限。
d:(a;;ka;;;wd) 分解
d:(a;;ka;;;wd) 是一个具体的 DACL 字符串,表示设置某些权限。它的格式是:
a;;ka;;;wd
这个格式具体分为几部分:
a:表示一个 访问控制条目(ACE),即授予访问权限。;;:分隔符,分隔每个权限项。ka:权限标识符,表示被授予权限的对象类型。在这里,ka代表 服务控制管理器(SCM) 的权限。;;;:分隔符,后面是空字段,表示没有指定任何特定条件(如用户或组)。wd:表示 写入数据 权限,指的是wd的用户可以修改服务管理器的权限。
解释各个部分
d:(a;;ka;;;wd) 的意思如下:
a:这表示一个 ACE(访问控制条目)项,指明访问类型。ka:表示将权限授予 服务控制管理器(SCM)。wd:表示授予 "写入数据" 权限,通常对应WRITE_DAC权限。这个权限允许修改对象的 DACL。换句话说,这样的权限让 servername 这个服务的 DACL 可以被修改。
总结
此命令实际上是在设置 servername(服务控制管理器)服务的安全描述符,授予某些用户或组(如 ka)写入数据(wd)的权限。
- servername 是服务控制管理器的名称,管理着所有的 Windows 服务。
wd(写入数据权限)使得具有该权限的用户可以修改服务控制管理器的访问控制列表(ACL),从而可能影响服务的启动和管理。
如果该命令成功执行,意味着指定用户或组(在此为 ka)获得了对服务控制管理器的 WRITE_DAC 权限,可以修改该服务的安全设置。
额外注意
- 权限修改可能带来安全风险,所以在使用
sc sdset命令时应谨慎操作,确保没有无意中授予过多权限给不应访问这些资源的用户或组。 - 需要管理员权限才能执行
sc sdset命令。
sc sdshow 和 sc sdset 两个命令的对比,展示它们在 Windows 系统服务管理中的不同功能和作用:
| 命令 | 功能描述 | 作用 | 用法示例 | 备注 |
|---|---|---|---|---|
sc sdshow |
显示服务的安全描述符 | 用于显示指定服务的安全描述符(Security Descriptor,简称 SD),即该服务的权限设置和访问控制列表(ACL)。 | sc sdshow <服务名> |
显示服务的安全描述符。返回的描述符包含服务的权限信息。 |
sc sdset |
设置服务的安全描述符 | 用于修改指定服务的安全描述符。通过此命令,管理员可以设置服务的访问控制列表(ACL),控制谁可以访问服务及其权限。 | sc sdset <服务名> <新的安全描述符> |
修改服务的安全描述符。需要提供新的安全描述符字符串。 |
| 返回结果 | 安全描述符信息 | 返回服务的当前安全描述符,包括服务的访问控制列表(ACL),例如服务允许哪些用户或组访问,允许的操作权限等。 | 显示类似以下格式:D:(A;;CCLCSWRPWPDTLOCRRC;;;BA) |
返回的是服务的安全描述符字符串,详细描述权限设置。 |
| 影响 | 无 | 只会显示当前服务的安全描述符,不会修改服务的任何属性。 | 无操作。 | 该命令仅用于查看,不会修改任何服务配置。 |
| 操作权限 | 无修改权限 | 只能用于查询和查看服务的安全描述符,无法直接修改服务配置。 | 无直接修改操作。 | sc sdshow 不会对服务产生任何修改,仅作查询用途。 |
| 使用场景 | 查询服务的权限设置 | 用于管理员查询服务的安全设置,查看哪些用户和组有权访问服务,权限级别如何。 | 管理员查看服务的安全配置。 | 用于审核、检查服务的访问权限等。 |
| 使用场景 | 修改服务的权限设置 | 用于管理员设置服务的权限,定义哪些用户或组对该服务有访问权限以及允许的操作类型。 | 管理员根据需要配置服务的访问权限。 | 在修改服务权限时,要小心权限设置,避免意外修改权限导致的访问问题。 |
| 参数 | 无修改参数,只有查询功能 | 必须指定新的安全描述符(ACL),该描述符必须符合正确的格式和语法。 | 无特殊参数,直接查看;sc sdset <服务名> <描述符> |
sc sdset 需要提供一个符合格式的安全描述符字符串作为参数。 |
| 安全性 | 只读,安全性无风险 | 修改服务的权限时,需要非常小心,错误的安全描述符可能导致服务无法启动或不必要的权限暴露。 | 查看时无风险,修改时可能带来安全隐患。 | 修改服务权限时,要确保描述符格式正确,并了解其权限含义。 |
总结:
sc sdshow用于查询服务的当前安全描述符,允许用户查看服务的权限配置,但不会修改任何内容。sc sdset用于设置服务的安全描述符,修改服务的权限和访问控制,管理员可以通过该命令更改谁可以访问服务,以及允许哪些操作。
这两条命令通常配合使用:sc sdshow 用于查看服务的安全设置,而 sc sdset 用于更改服务的权限设置。
在 sc sdset 命令中,访问控制列表(ACL,Access Control List)用于定义对服务的访问权限。ACL 是一个包含多个访问控制条目(ACE,Access Control Entry)的列表,每个 ACE 定义了一个主体(如用户或组)及其对应的权限。以下是 sc sdset 中常见的 ACL 参数的完整表格,展示了各种可用的权限和格式。
ACL 格式说明
ACL 描述符遵循特定的格式,通常以 D: 开头,后面跟着多个访问控制条目(ACE)。每个 ACE 定义了对服务的访问权限,ACE 的格式如下:
(A;;<权限>; <用户/组标识符>;;<标志>)
A表示访问允许(Allow)。D表示访问拒绝(Deny)。<权限>是具体的权限标识符。<用户/组标识符>是要授予权限的用户或组。<标志>表示权限的附加条件或特性。
常见权限(<权限>):
| 权限名称 | 简写 | 描述 |
|---|---|---|
CCL |
CreateContainer |
创建容器对象的权限(如文件夹或服务) |
CLCS |
CreateLink |
创建链接对象的权限 |
SWRP |
SetAttributes |
设置对象的属性权限 |
WP |
Write |
写操作权限,允许对服务或对象进行修改 |
DTLOCR |
Delete |
删除权限 |
CR |
Read |
读取权限,允许读取服务或对象的内容 |
RP |
ReadProperties |
读取对象的属性权限 |
SP |
SetProperties |
设置对象的属性权限 |
WP |
WriteProperties |
设置对象的属性权限 |
标志(<标志>)
| 标志名称 | 描述 |
|---|---|
G |
公共标志,表示规则适用于全体用户或所有进程 |
S |
系统标志,表示规则只适用于系统 |
U |
用户标志,表示规则仅适用于特定用户 |
O |
操作员标志,表示规则适用于具有管理员权限的用户 |
用户或组标识符
| 标识符 | 描述 |
|---|---|
BA |
BUILTIN\Administrators(管理员组) |
IU |
用户(User) |
S-1-5-32-544 |
Administrators(管理员组标识符) |
S-1-5-32-545 |
Users(普通用户组标识符) |
Everyone |
任何用户,通常表示所有用户 |
ACL 完整的示例和表格:
| 参数 | 简要描述 |
|---|---|
D:(A;;CCLCSWRPWPDTLOCRRC;;;BA) |
表示允许 BUILTIN\Administrators 组进行完整的服务管理操作(包括创建、写、删除等权限)。 |
D:(A;;CCLCSWRPWPDTLOCRRC;;;IU) |
表示允许 用户组 进行服务的所有管理操作。 |
D:(A;;CCLCSWRPWPDTLOCRRC;;;S-1-5-32-544) |
设置管理员组的访问控制权限,允许他们执行所有操作。 |
D:(A;;CCLCSWRPWPDTLOCRRC;;;S-1-5-32-545) |
设置普通用户组的访问控制权限,允许他们执行有限的操作。 |
示例 sc sdset 命令:
假设要修改服务的权限,以便仅允许 Administrators 组进行所有操作,其他用户没有访问权限,可以使用如下命令:
sc sdset <服务名> D:(A;;CCLCSWRPWPDTLOCRRC;;;BA)
这个命令表示允许 BA(Administrators 组)对服务进行所有权限操作,其他用户没有任何权限。
备注:
sc sdset修改的安全描述符遵循 Windows 安全描述符格式。- 需要特别小心修改权限,因为不当的设置可能会导致服务无法正常运行,或者使服务的安全性降低。

浙公网安备 33010602011771号