在windows的cmd和powershell下可有两种方法操作服务,net和sc(Set-Content)。

 

net用于启动和停止没有被禁用的服务,语法是:

net start 服务名                         启动 net start 服务名
net stop 服务名                         停止 net stop 服务名

用sc可用于设置被禁用的服务,语法是:
sc config 服务名 start= demand     //手动
sc config 服务名 start= auto       //自动
sc config 服务名 start= disabled //禁用
sc start 服务名
sc stop 服务名
注:

1)服务名不一定是你在服务面板看到的那个名,例如,你要打开被禁用的telnet服务,sc config telnet start= auto,报错:[SC] OpenService FAILED 1060,因为telnet的服务名不是telnet而是tlntsvr,sc config tlntsvr start= auto     就可以了,可以在服务面板里右键-->属性-->“服务名称”查看telnet属性,从可执行文件的路径里可看到服务程序名,即命令中的服务名。  

1.更改服务的启动状态(这是比较有用的一个功能)   
2.删除服务(除非对自己电脑的软、硬件所需的服务比较清楚,否则不建议删除任何系统服务,特别是基础服务),特别提醒,你可以用sc delete wwbizsrv 删除像块嚼过的口香糖一样赖在你机器上的阿里亮灯服务。
3.停止或启动服务(功能上类似于net stop/start,但速度更快且能停止的服务更多)

具体的命令格式如下:  
修改服务启动类型的命令行格式为
sc config 服务名称 start= demand(设置服务为手动启动)
sc config 服务名称 start= disabled(设置服务为禁用) 

停止/启动服务的命令行格式为   
sc stop/start 服务名称   
  注意:平时常接触的都是服务的显示名称,而以上所指是服务名称,都可以在控制面板->管理工具->服务里面,双击对应的服务来查询。  
  先举例说明一下具体的设置方法:   
  如设置远程注册表服务为手动其格式为   
  sc config RemoteRegistry start= demand   
  设为禁用的格式为:
  sc config RemoteRegistry start= disabled   
  停止服务则格式为:   
  sc stop RemoteRegistry   
  首先把自己所需设置的服务名称查到之后,按照上面的格式做成批处理文件,重装系统之后只要运行批处理文件即可。  
  以下是我的设置,以XpSp2为蓝本,可比对所用的系统进行增删和修改。注:未加入XpSp2的自动更新、安全中心、防火墙。 
  sc config Alerter start= demand   
  sc config TrkWks start= demand   
  sc config helpsvc start= demand   
  sc config policyAgent start= demand   
  sc config dmserver start= demand   
  sc config WmdmpmSn start= demand   
  sc config Spooler start= demand   
  sc config RemoteRegistry start= demand   
  sc config NtmsSvc start= demand   
  sc config seclogon start= demand   
  sc config Schedule start= demand   
  sc config WebClient start= demand   
  sc config W32Time start= demand   
  sc config WZCSVC start= demand
  sc config ERSvc start= demand   
  sc config Themes start= demand   
  sc config FastUserSwitchingCompatibility start= disabled   
  sc config Messenger start= disabled   
  sc config protectedStorage start= disabled
  sc config SSDpSRV start= disabled   
  sc config TermService start= disabled   
  sc config ShellHWDetection start= disabled   
  如果需要立即关闭服务也可把以下代码跟在上面的代码之后
  sc stop W32Time   
  sc stop ShellHWDetection   
  sc stop TrkWks
  sc stop helpsvc
  sc stop dmserver
  sc stop policyAgent   
  sc stop Spooler   
  sc stop RemoteRegistry   
  sc stop seclogon   
  sc stop Schedule   
  sc stop WZCSVC
  sc stop ERSvc   
  sc stop Themes   
  sc stop FastUserSwitchingCompatibility   
  sc stop protectedStorage   
  sc stop SSDpSRV   
  sc stop WebClient   
  最后把修改好之后的代码存为services.cmd,在以后进行服务设置时,直接运行事先保存好的批处理文件就可以做到事半功倍了。  
  看到这里,使用Win2000的朋友也不必失望,sc.exe这个命令行工具对Win2000同样适用,可从装有WinXp或者Win2003的机器里面拷贝sc.exe文件,与保存好的批处理文件放在一起,然后执行批处理文件即可。  
  对注册表比较熟悉的朋友可能会想到用注册表来设置服务的启动类型,这也是一种可行的方法,本身却有着内在不足。原因是服务启动类型在注册表中对应的键值较长且分散,进行整理不方便直观且易错漏,所以这种方法比较适用于无人值守的安装时使用。

使用案例:
在命令行下启动自动更新服务:

C:\>sc config wuauserv start= auto
[SC] ChangeServiceConfig SUCCESS
C:\>sc start wuauserv
    SERVICE_NAME: wuauserv
         TYPE               : 20   WIN32_SHARE_PROCESS
         STATE               : 2   START_PENDING
                                 (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
         WIN32_EXIT_CODE     : 0   (0x0)
         SERVICE_EXIT_CODE   : 0   (0x0)
         CHECKPOINT         : 0x0
         WAIT_HINT           : 0x7d0
         PID                 : 1156
         FLAGS               :
C:\>