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. 如果命令中的需要进行双引号的嵌套,使用反斜杠加引号 " \" " 来进行转义处理。