第2章 cmd命令基础:服务操作命令(sc)

Windows 命令提示符(CMD)全面操作指南 命令提示符,也称为cmd.exe或 CMD,是 Windows 操作系统上的命令行解释程序。它提供了基于文本的界面,允许用户通过输入命令来执行操作、运行脚本和自动化任务。PowerShell 是现代的、功能更强大的命令行 shell 和脚本语言,它完全取代了 CMD。面向对象的管道,传递的是对象而非文本,处理更灵活。强大的cmdlet命令体系(如内置支持更复杂的逻辑、函数和模块。与 .NET Framework 深度集成。 阅读详情

Hi~ 我是李小咖,主要从事网络安全技术开发和研究。

本文取自《李小咖·网安技术库》,欢迎一起交流学习🫡:https://imbyter.com


Windows系统中的sc命令用于管理系统服务(service),可以创建、删除、启动、停止、查询和修改系统服务。


一、服务管理器

通过在“运行”中输入services.msc,可以打开服务管理器界面查看服务列表:

​

​

注意:在服务管理器界面中“名称”列,表示的并不是“服务名”,而是服务的“显示名”。可以在指定服务列表中双击或者右键“属性”,即可查看到其“服务名”:

​

​

“显示名”是仅显示给用户看的,“服务名”才是我们后面使用sc命令需要用到的参数。


二、查看服务

格式:sc query <服务名>

​

  • TYPE:表示服务的类型,WIN32_SHARE_PROCESS 表示当前服务是共享类型,WIN32_OWN_PROCESS 表示独占服务。

    共享服务表示多个服务使用同一个进程,独占服务表示当前进程单独使用一个服务。

    • STATE:服务状态,STOPPED 表示已经停止的服务。

    通过使用sc queryex+服务名能查看更详细的服务信息:

    ​

    使用sc qdescription <服务名>用于查看服务的描述信息,sc GetDisplayName <服务名>用于查看服务的显示名:

    sc qdescription W32Time
    sc GetDisplayName W32Time

    三、创建服务

    格式:sc create <服务名>

    创建服务需要至少两个输入参数:服务名,执行程序。

    • 服务名:可以按需要自定义,但不能和已有服务名重名;

    • 执行程序:即服务运行后执行的程序。

    要将一个程序设置为服务,还需要具备两个条件:

    1. 需要具备高权(管理员权限);

    2. 程序内部有服务处理功能。

    比如我们要将demo.exe注册为系统服务,首先需要以管理员权限打开cmd,然后执行:

    D:\>sc create aaa binpath= E:\demo.exe
    • sc create用于创建新服务,后跟新服务名;

    • binpath表示被创建为服务的程序,需要写上绝对路径。

    ​

    执行成功后,E:\demo.exe便被注册为一个名为aaa的系统服务:

    ​

    • 因为我们注册服务的时候并未指明“描述”信息,所以“描述”是空的;

    • 在没有指明服务的启动方式的情况下,启动类型默认为“手动”。

    我们也可以使用下面这种方式,创建参数更加明确的服务:

    D:\>sc create aaa binpath= E:\demo.exe DisplayName="demo" start= auto obj="NT Authority\LocalService"
    • DisplayName:服务的显示名;

    • start:服务的启动方式:

      • auto:自动启动(即每次开机随系统自启动);

      • demand:表示手动启动;

      • disabled:表示禁用。

    • obj:服务的登陆类型,可选类型有:

      • NT Authority\LocalService:表示本地服务;

      • LocalSystem:表示本地系统;

      • NT Authority\NetworkService:表示网络服务;

      • 同时也可以创建用户下的服务:sc create aaa binpath= E:\demo.exe obj= ".\user1" password= 123456,“.\user1”表示本系统中存在的用户,password是该用户的系统登陆密码。这样创建的服务仅属于该用户,其他用户登陆时此服务不会被启动。


    被注册为服务的程序demo.exe的源码实例:

    #include <stdio.h>
    #include <Windows.h>
    
    #define SLEEP_TIME 3000 //间隔时间
    #define FILE_PATH "E:\\log.txt" //信息输出文件
    
    bool brun = false;
    
    SERVICE_STATUS servicestatus;
    SERVICE_STATUS_HANDLE hstatus;
    
    int WriteToLog(const char* str);
    
    void WINAPI ServiceMain(int argc, char** argv);
    void WINAPI CtrlHandler(DWORD request);
    
    int WriteToLog(const char* str)
    {
        FILE* pfile;
    
        fopen_s(&pfile, FILE_PATH, "a+");
    
        if (pfile == NULL)
        {
            return -1;
        }
    
        fprintf_s(pfile, "%s\n", str);
        fclose(pfile);
    
        return 0;
    }
    
    void WINAPI ServiceMain(int argc, char** argv)
    {
        OutputDebugStringA("进入ServiceMain函数,正在挂起3秒...");
    
        //Sleep(3000);
    
        servicestatus.dwServiceType = SERVICE_WIN32;
        servicestatus.dwCurrentState = SERVICE_START_PENDING;
        servicestatus.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_STOP;//在本例中只接受系统关机和停止服务两种控制命令
        servicestatus.dwWin32ExitCode = 0;
        servicestatus.dwServiceSpecificExitCode = 0;
        servicestatus.dwCheckPoint = 0;
        servicestatus.dwWaitHint = 0;
        hstatus = ::RegisterServiceCtrlHandler(L"testservice", CtrlHandler);
        if (hstatus == 0)
        {
            WriteToLog("RegisterServiceCtrlHandler failed");
            return;
        }
        WriteToLog("RegisterServiceCtrlHandler success");
        //向SCM 报告运行状态
        servicestatus.dwCurrentState = SERVICE_RUNNING;
        SetServiceStatus(hstatus, &servicestatus);
        //在此处添加你自己希望服务做的工作,在这里我做的工作是获得当前可用的物理和虚拟内存信息
        brun = true;
        while (brun)
        {
            WriteToLog("demo");
            Sleep(SLEEP_TIME);
        }
    }
    
    void WINAPI CtrlHandler(DWORD request)
    {
        OutputDebugStringA("进入CtrlHandler函数");
        switch (request)
        {
        case SERVICE_CONTROL_STOP:
            brun = false;
            servicestatus.dwCurrentState = SERVICE_STOPPED;
            break;
        case SERVICE_CONTROL_SHUTDOWN:
            brun = false;
            servicestatus.dwCurrentState = SERVICE_STOPPED;
            break;
        default:
            break;
        }
        SetServiceStatus(hstatus, &servicestatus);
    }
    
    void main()
    {
        system("whoami > E:\\1.txt");
        OutputDebugStringA("进入Main函数,正在挂起5秒...");
    
        //Sleep(50000);
    
        SERVICE_TABLE_ENTRY entrytable[2];
        entrytable[0].lpServiceName = (LPWSTR)L"testservice";
        entrytable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
        entrytable[1].lpServiceName = NULL;
        entrytable[1].lpServiceProc = NULL;
    
        OutputDebugStringA("进入Main函数,执行了StartServiceCtrlDispatcher");
        StartServiceCtrlDispatcher(entrytable);
    }

    如上代码对应的demo执行后,首先会生成E:\1.txt文件,同时把cmd中执行whoami的结果输出到这个文件中。在服务执行的过程中,创建E:\log.txt文件,并每隔3秒,向里面添加demo这个字符串。

    程序直接“打开”运行和以服务的形式运行,两种方式执行的代码分支是不同的,功能是不一样的。直接双击或者右键“打开”的方式执行,程序进入的仅仅是main入口函数,执行完成就结束了。以服务的形式启动,程序先会进入main函数,然后会进入我们在程序中注册的ServiceMain函数执行。


    四、启动服务

    启动服务命令为sc start,需要使用管理员权限的cmd去执行。

    # 开启服务
    D:\>sc start WSearch

    五、停止服务

    停止服务命令为sc stop,需要使用管理员权限的cmd去执行。

    # 停止服务
    D:\>sc stop WSearch

    六、修改服务

    使用sc config <服务名>用于修改服务的配置信息,包括服务类型、启动方式、执行程序、显示名、组、密码等。

    sc config aaa start= auto type= own binPath= c:\windows\system32\calc.exe displayname= aa1

    使用sc description <服务名> <新描述信息>用于修改服务的描述信息:

    sc description aaa 这是服务描述信息

    七、删除服务

    删除服务命令为sc delete,需要使用管理员权限的cmd去执行。

    # 删除服务
    D:\>sc delete aaa

    特殊指令之SC命令详解 特殊指令之SC命令详解 DOS脚本梳理已发布文章 : SC命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。 声明一下:小编是从微软官网上查的资料(https://technet.microsoft.com/zh-cn/library/cc772676#BKMK_config), 只是通过自己的理解进行测试并插入小编的测试截图, 希望对大家有用 Win7及其以上版本当然也能用 SC命令主要的几个功能: 1.更改服务的启动状态(这是比较有用的... 阅读详情

    相关推荐

    【慢教程】CMD5:CMD网络、进程、服务命令

    摘要:本文系统介绍了Windows CMD中常用的网络、进程和服务管理命令。

    正经教主是个热衷于正经学习分享的教主。 1428

    cmd命令行操作服务service

    步骤 1. 运行--〉cmd:打开cmd命令框 2. 在命令行里定位到InstallUtil.exe所在的位置 InstallUtil.exe 默认的安装位置是在C:\Windows\Microsoft.NET\Framework\v4.0.30319里面,所以你要在cmd里通过cd定位到该位置(cd C:\Windows\Microsoft.NET\Framework\v4.0.30319...

    yinshuilan的专栏 1万+

    cmd管理windows服务

    作为一名IT运维人员,经常性的有同事会说cisco vpn不能登录啦、打印机不能打印啦、网络共享异常啦。。。 一般情况下都会win+r运行services.msc打开服务管理,然后重启Cisco Anyconnect Secure Mobility Agent、print Spooler、关闭ICS(internet connction sharing)来解决问题 这个方法虽然好,但是还可以用cmd命令来管理服务 net start ********************查看开启了哪些服务 .

    A soul tortured by desire 3115

    命令行启动和关闭应用程序或者服务

    windows批处理命令启动和关闭应用程序和服务

    乐子 1871

    ε-差分隐私之拉普拉斯噪声机制(定义 + 证明 + 代码)

    ε-差分隐私之拉普拉斯噪声机制 差分隐私的描述 1-范式的定义:使用matlab调用函数norm(x, 1) 更多范式见 范式 差分隐私的定义应该满足 拉普拉斯噪声的证明全过程如下: DP方向差分隐私证明是基本入门!!! -拉普拉斯噪声分布代码 Laplace分布的概率密度函数的形式是: 使用python - matplotlib来绘制概率分布图: import matplotlib.pyplot as plt import numpy as np def laplace_fun

    毕业才是起点 1万+

    Calibre提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

    本文详细解析了Calibre提参过程中hcell和xcell文件的应用技巧,帮助工程师精准屏蔽模块以优化寄生参数提取。通过对比hcell与xcell的核心差异、图形界面与命令行操作指南,以及常见问题排查方法,提升芯片后端设计效率。附避坑指南,解决EETOP论坛热议的模块丢失问题。

    weixin_26795617的博客 430

    Windows Service CMD 命令 sc

    除了通过“控制面板”>“管理工具”>“服务”来查看服务之外,还有很多种其他的方式可以对Windows服务进行管理。在命令行方式下,你可以使用sc.exe(Service Control的缩写)来管理服务。   我们可以用sc.exe命令来查询、启动、停止,甚至删除服务。   点击开始>运行>输入"cmd"回车,然后在弹出的DOS窗口中输入sc回车就可以看到sc命令的使用帮助了。

    pandoraliu的专栏 8590

    新入手的Atmel-ICE产品说明

    【一句话自我介绍】 我是Atmel最新推出的功能强大的调试编程工具,适用于Atmel ARM® Cortex®-M的Atmel SAM和AVR® 系列芯片。 【我支持的软件】 完美支持Atmel Studio 6.2以上版本直接支持ICC8AVR以上版本支持烧录ICCAVR、CVAVR、IAR等生成的HEX文件 【我支持的器件】 支持AVR 32-bit MCUs的JTA

    kaloha3的专栏 1万+

    在CMD下使用sc命令,报openservice failed 1060错误

    在CMD下使用sc命令,报openservice failed 1060错误

    qq_43741193的博客 1万+

    AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

    本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

    QINJIEEE的博客 1091

    Android系统去掉长按webview界面弹框中的分享功能

    Android 系统去解决长按显示内容,去掉分享功能,不论那个界面,是所有界面都需要满足。如果仅仅去掉系统自带的,那么系统来处理如果客户自定义,部分App自定义的菜单项,不是调用系统的,那么还是需要应用去解决的。之前做过Editext,其实还需要去TextView,最难点的就是WebView中的HTML了 去分享功能了。WebView中涉及到分享功能菜单的界面,/***//***//***//***//***//***//***//***//**

    十年饮冰,难凉热血 1011

    用SC命令将任意程序设为系统服务(最全的SC用法)

    用SC命令将任意程序设为系统服务(最全的SC用法)转自 http://blog.526net.com/?p=664很多朋友都知道可以用sc命令将程序注册为服务但是服务程序要有专门的结构 如果不符合就无法启动 现在有一个变通的方法就是使用以下命令:sc Create 服务名称 binPath= “cmd /c start 路径” type= own type= interact start= auto上面用了cmd做了外壳来启动你的程序 这时候点击启动服务虽然会报错 但实际上你的程序已经启动了打开任务管理器

    寻找甘当科学家的女人/男人 9509

    OPPO 后端校招面试,过于简单了!

    你好,我是 Guide。2026 届秋招陆续开奖公司的越来越多了,今天来看一家手机厂 OPPO。前几天,已经分享了和今年校招开奖的情况。其中,小红书的薪资最为炸裂,大白菜一年都能给到 51w+。不过,相对应的工作强度和压力也是真的难顶,确实很难有钱多又轻松的活!OV (OPPO 和 Vivo)这几年发展真还可以的,这两家的高端机口碑都不错。本人也是最近入手了一款 Vivo 的上一代旗舰,拍照是真的不错啊!每个月会有 1.2k 生活补贴,生活费是按照 8 % 缴纳。

    JavaGuide 737

    SC不是内部命令或外部命令

    CMD中,输入SC命令或注册odbc时,系统提示sc不是内部或外部命令。解决方法如下:右击我的电脑,点击属性—->高级—->环境变量,在弹出的新窗口下的系统变量中找到Path,点击编辑,在变量值一行最后添加以下内容;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem之后点击确定即可。重新打开cmd即可

    2万+

    YOLOv11涨点改进| TGRS 2026 | 独家创新首发、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测、图像分割涨点

    🔥本文提出了一种改进YOLOv11网络模型的STSAM协同时空注意力融合模块,用于提升高分辨率遥感变化检测的精度。STSAM通过并行处理全局跨时相注意力和局部坐标注意力,能有效聚焦真实变化目标,强化边界和结构细节。该模块包含两个分支:Cross-Attention分支通过时间嵌入增强双时相特征的时间差异,CoordAtt分支则强化局部结构细节。实验表明,STSAM能显著提升变化检测性能,同时保持训练稳定性。文章详细介绍了模块结构、原理、优势,并提供了完整的核心代码实现和配置方法,包括三种改进方案。

    Ai缝合怪、助力小伙伴高效发论文 214

    《Scratch图形化等级考试(1~4级)历届真题解析》专栏总目录

    ❤️ 专栏名称:《🌸 专栏介绍:中国电子学会《全国青少年软件编程等级考试》Scratch图形化等级考试(1~4级)历届真题解析。🚀 订阅专栏:原价 99.9,🔥 火爆订阅中 🔥,限时 19.9。订阅后可阅读专栏内所有文章,本专栏持续更新中,欢迎订阅!

    人生就是一个不断学习的过程 1万+

    使用SC命令行配置启动windows服务

    使用SC命令行配置启动windows服务大家对于系统中的服务应该了解甚少,在这里我给大家详细介绍下,用SC命令来执行对windows XP 服务的执行先来简单介绍下SC命令中的一些作用.首先大家打开“命令提示符”。 如果连“命令提示符”。 这个东西都不知道的话,可谓笑话了不多说了.点开始,运行CMD 可以打开“命令提示符”。 键入: sc configservice namestart= {b

    坚持,才是力量.老实做人,踏实做事. 9604

    汉书HE8,好用的汇编代码编写工具

    汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

    CMD命令讲解(一)SC

    参考网站:https://technet.microsoft.com/en-us/library/bb490995.aspx 备注:网站内容是翻译得来,源网站在上面 SC 与服务控制器和已安装的服务进行通信。exe检索和设置关于服务的控制信息。您可以使用sc.exe来测试和调试服务程序。存储在注册表中的服务属性可以设置为控制如何在启动时启动服务应用程序,并作为后台进程...

    dieduishi5940的博客 666

    数学建模模型总结

    这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

    怀旧版电脑GBC模拟器

    再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

    Windows下用cmd命令安装及卸载服务

    第一种方法: 1. 开始 ->运行 ->cmd2. cd到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(Framework版本号按IIS配置)3. 安装服务: 运行命令行 InstallUtil.exe E:/test.exe 卸载服务: 运行命令行 InstallUtil.exe -u E:/test.exe 这样就能...

    b208123的博客 9434

    复分析 阿尔福斯(Ahlfors) 第三版答案 英文

    答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

    cmd命令手动、自动启动和禁用服务

    使用cmd命令手动、自动启动和禁用服务 小技巧使用命令行启动服务 在cmd下可有两种方法打开,net和sc,net用于打开没有被禁用的服务,语法是: net start 服务名 启动 net start 服务名 停止 net stop ...

    weixin_30323631的博客 2225

    qt window服务 SC命令

    描述: 在注册表和服务数据库中修改服务项。 用法: sc <server> config [服务名称] <option1> <option2>... 选项: 注意: 选项名称包括等号。 等号和值之间需要一个空格。 要删除依赖关系,请使用单个“/”表示依赖关系值。 type= <own|share|interact|kernel|filesys|rec|adapt|userown|usershare> ...

    lxj362343的博客 604

    cmd 顺序启动服务_计算机cmd命令(基础)

    1什么是cmd命令?cmd是command的缩写.即命令提示符(CMD)2有啥作用?查询系统的信息或者是判断网络的好坏。3进入cmd界面:win+r-->cmd-->enter(按照顺序输入执行)4试试命令1:help 和/?这两个命令,都表示提示信息,我来展示一下help 和/?命令的鬼王风采,会得到下面的原生命令。(红色部分为常用命令,先记住常用命令,)ASSOC 显示或修改文件扩...

    weixin_39996134的博客 1694

    cmd-sc命令详解

    SC命令详解 介绍SC,SC QC,and SC QUERY SC使用这样的语法: 1. SC [Servername] command Servicename [Optionname= Optionvalues] 2. SC [command] 这里使用第一种语法使用SC,使用第二种语法显示帮助。 下面介绍各种参数。 Servername 可选择:...

    weixin_34383618的博客 1131

    SC命令或注册表操作删除服务

    1. SC命令 开始->运行->cmd  输入sc delete [servicename] 比如要删除windows的时间服务,操作如下:sc delete W32Time 服务名在在属性中查看,若服务名中间有空格,前后加引号         可以键入 "sc [command]"以获得命令的进一步帮助         命令:           query-------------

    asnbzo的专栏 1390
    上一篇: 第2章 cmd命令基础:注册表操作命令(reg)
    下一篇: 第2章 cmd命令基础:计划任务命令(schtasks)
    李小咖
    博客等级 码龄14年 446粉丝 47原创
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

    当前余额3.43元 前往充值 >
    需支付:10.00元
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付元
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值