Windows 2003 Server存在一个sc命令,(好像Windows 2000/XP/NT都有这个。)该命令可以手工创建Windows服务(NT Service)
以下是微软帮助文件中对sc命令的描述:
与“服务控制器”和已安装设备进行通讯。SC.exe 检索和设置有关服务的控制信息。可以使用 SC.exe 来测试和调试服务程序。可以设置存储在注册表中的服务属性来控制如何在启动时和作为后台程序运行时启动服务应用程序。SC.exe 的参数可以配置指定的服务,检索当前服务的状态,也可以停止和启动服务。可以生成批处理文件来调用不同的 SC.exe 命令以自动启动或关闭服务序列。SC.exe 提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
其他命令选项可以自己查帮助,主要看看create和delete这两条我们常用的命令
为服务在注册表和“服务控制管理器”中创建子项和入口。
语法
sc [ServerName] create [ServiceName] [type= {own | share | kernel | filesys | rec | adapt | interact type= {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 | interact type= {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}
- 如果在启动中,服务器启动失败,则指定错误的严重性。默认设置为 ascii。
normal
将记录错误,并且显示消息对话框,通知用户服务启动失败。启动将继续。这是默认设置。severe
记录错误(如果存在)。计算机尝试以最新的有效配置重新启动。这可能导致计算机能够重新启动,但服务器却仍然不能运行。critical
记录错误(如果存在)。计算机尝试以最新的有效配置重新启动。如果上次已知正确的配置失败,启动也将失败,启动过程就会以“蓝屏”错误而停止。ignore
错误已记录,启动继续。记录错误超出在事件日志的范围,不再给用户作出提示。- binpath= BinaryPathName
- 指定一个进入服务二进制文件的路径。binpath= 没有默认值,必须要给出此字符串。
- group= LoadOrderGroup
- 指定一个该服务为其中成员的组名。组列表存储在 HKLM\System\CurrentControlSet\Control\ServiceGroupOrder 子项的注册表中。默认设置为空值。
- 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:\windows\system32\NewServ.exe
sc create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= "+TDI Netbios"从注册表中删除服务子项。如果服务正在运行或者另一个进程有一个该服务的打开句柄,那么此服务将标记为删除。
语法
sc [ServerName] delete [ServiceName]
参数
- ServerName
- 指定服务所在的远程服务器名称。该名称必须使用 UNC 格式(“\\myserver”)。要在本机上运行 SC.exe,请忽略此参数。
- ServiceName
- 指定由 getkeyname 操作返回的服务名。
- /?
- 在命令提示符下显示帮助。
注释
- 使用“添加或删除程序”删除 DHCP、DNS 或任何其他内置的操作系统服务。“添加或删除程序”不只删除该服务的注册表子项,而且还卸载该服务并删除其所有的快捷方式。
示例
下面的示例显示了如何使用 sc delete 命令:
sc delete newserv
需要注意的是:
1. 在option= xxxxx格式中,“=”号和后面的内容一定要有空格,如depend= Tcpip
2. 如果命令中的需要进行双引号的嵌套,使用反斜杠加引号 " \" " 来进行转义处理。
相关文章
- 在 WSL2 中使用 apt install cmake 命令时出现 “failed to fetch “ 错误的解决办法
- Linux ftp命令教程:如何使用ftp命令进行文件传输(附实例详解和注意事项)
- 使用yum命令执行安装指令时,报错File contains no section headers. file: file:///etc//
- Android使用adb命令时提示提示“CANNOT LINK EXECUTABLE: cannot ...”的原因及解决办法
- Redis --- redis事务和分布式事务锁-事务过程中失败有两种可能: Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令中用在了错误类型的键上面,所以如果在生产环境中你使用的正常命令,那么在 Redis 事务中,是不会出现错误而导致回滚的。 来自文档:Redis commands can fail only if called with a wrong syntax... 事务执行一半,Redis宕机。如果 Redis 服务器因为某些原因被管理员杀死,或者遇上某种硬件故障,那么可能只有部分事务命令会被成功写入到磁盘中。如果 Redis 在重新启动时发现 AOF 文件出了这样的问题,那么它会退出,并汇报一个错误。使用redis-check-aof程序可以修复这一问题:它会移除 AOF 文件中不完整事务的信息,确保服务器可以顺利启动 注意: 若在事务队列中存在命令性错误(类似于java编译性错误),则执行EXEC命令时,所有命令都不会执行 若在事务队列中存在语法性错误(类似于java的1/0的运行时异常),则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。 Redis 官网也解释了自己为啥不支持回滚。简单来说就是 Redis 开发者们觉得没必要支持回滚,这样更简单便捷并且性能更好(回滚还需要解决回滚事务覆盖的问题)。Redis 开发者觉得即使命令执行错误也应该在开发过程中就被发现而不是生产过程中。
- ubuntu使用git提交github时,执行pull或者push命令要重新输入用户名和密码
- 在anaconda上使用jupyter notebook, 点击launch不能打开时,使用命令行方式打开
- 在Ubuntu中,在使用rm命令删除文件和文件夹时启用确认
- 使用cmd输入ipconfig查询主机ip时,出现“不是内部或外部命令”要如何处理?
- 虚拟机中的Linux(CentOS7版本)使用locate时,提示未找到命令的解决方案