2009年3月18日星期三

如何通过使用 Sc.exe 中创建 Windows 服务

概要:

远程创建,并从命令行启动服务中,,您可以使用 SC 工具 (Sc.exe) 资源工具包中。

虽然可以使用 Netsvc.exe 和 Instsrv.exe 工具要在远程计算机上启动服务,这些工具不使您能够远程创建服务。

请注意 该 Srvinstw.exe 工具是图形用户界面 (GUI) 版本来创建远程服务。 Srvinstw.exe 不是一个命令行工具。

详细说明:

可以使用 Sc.exe 为了开发 Windows 服务。 资源工具包中提供的 Sc.exe 实现对所有 Windows 服务控制应用程序编程接口 (API) 函数的调用。 可以通过在命令行上指定这些设置对这些函数的参数。 Sc.exe 也会显示服务状态,并检索存储在状态结构字段中的值。 该工具还可以指定远程计算机的名称,以便可以调用服务 API 函数,或在远程计算机上查看服务状态结构。

Sc.exe 还可以调用的服务控制任何 API 函数,并改变任何从命令行参数。 此优点是它可以方便地创建或注册表和服务控制管理器数据库中配置服务信息。 您没有通过手动创建在注册表中的项,然后重新启动计算机以强制服务控制管理器来更新其数据库中配置服务。

Sc.exe 使用以下语法:

Syntax1 (使用 Syntax1 运行 Sc.exe)
sc [servername] 命令 servicename [optionname = optionvalue...]
Syntax2 (可用 Syntax2 显示帮助信息的 查询 命令除外)
sc [命令]


参数
服务器名
可选项。 如果要在远程计算机上运行的命令,请指定服务器的名称。 该名称必须以两个反斜杠 (\) 字符开头 (是例如 \\ myserver)。 本地的计算机上,请运行 Sc.exe,不提供此参数。
命令
指定 sc 命令。 请注意许多 sc 命令需要指定计算机上的管理权限。 Sc.exe 支持以下命令:
配置
更改服务 (persistent) 的配置。

继续
向服务发送继续控制请求。

控件
向服务发送一个控件。

创建
创建的服务 (添加它到注册表)。

删除
删除服务注册表) 中。

enumdepend
枚举服务依存关系。

getdisplayname
获取服务 DisplayName。

getkeyname
获取服务 ServiceKeyName。

询问
向服务发送一个 interrogate 控制请求。

暂停
向服务发送暂停控制请求。

qc
查询服务的配置。 有关详细的信息请参阅参考部分,"SC QC"。

查询
查询状态的一种服务,或枚举状态的类型的服务。 有关详细的信息请参阅参考部分,"SC 查询"。

启动
启动服务

停止
向服务发送停止请求。
服务名称
指定给服务注册表项的名称。 请注意这是不同于在显示名称 (这是您使用 net start 命令和服务工具在 Control Panel 看到的内容。 Sc.exe 在为服务使用服务密钥名称作为主标识符。
optionname
/ optionname 和 optionvalue 参数允许您指定名称和可选命令参数的值。 请注意没有在 optionname 和等号之间没有空格。 您可以提供无、 一个,或多个可选参数的名称和值对。
optionvalue
指定命名 optionname 参数的值。 有效的值的范围通常是为每个 optionname 受限制的。 有关可用值的列表,对每个命令的请求帮助。
许多命令需要管理员权限。 确保您是执行在开发计算机的管理员。

sc create 命令将创建该服务的项在注册表中和服务控制管理器数据库中。

语法
sc [servername] 创建 servicename [optionname = optionvalue ……


参数
服务器名
可选项。 如果要在远程计算机上运行的命令,请指定服务器的名称。 该名称必须以两个反斜杠字符开头 (是例如 \\ myserver)。 本地的计算机上,请运行 SC,不提供此参数。
服务名称
指定给服务注册表项的名称。 请注意这是不同于在的显示名称即看到, net start 和控制面板中的服务工具的。 Sc.exe 在为服务使用服务密钥名称作为主标识符。
optionname
/ optionname 和 optionvalue 参数允许您指定名称和可选参数的值。 请注意没有在 optionname 和等号之间没有空格。 您可以提供无、 一个,或多个可选参数的名称和值对。 sc 查询 命令支持下列值: optionname optionvalue
类型 = 拥有、 共享、 交互,内核,filesys
要创建的服务类型。 Optionvalues 包括使用的驱动程序的类型。
(默认值 = 共享)

启动 = 启动系统、 自动、 禁用请求,
启动该服务的类型。 选项值包括使用的驱动程序的类型。
(默认值 = 请求)

错误 = 正常、 严重、 重要,忽略
如果该服务未启动启动过程中发生错误的严重性。
(默认值 = normal)

binPath = (字符串)
服务二进制文件的路径名。 为此参数没有默认值。 必须提供此字符串。

组 = (字符串)
此服务是的成员组的名称。 组的列表存储在注册表中 ServiceGroupOrder 下。
(默认值 = Nothing)

标记 = (字符串)
如果此字符串设置为"yes",Sc.exe 从 CreateService 调用中获得一个 TagId,但是,Sc.exe 不会显示该标记。
(默认值 = Nothing)

取决于 = (空格分隔字符串)
服务或组,必须在此项服务之前启动的名称。

obj = (字符串)
在其中运行该服务帐户的名称。 对于驱动程序,这将是 Windows 驱动程序的对象名称。
(默认值 = LocalSystem)

DisplayName = (字符串)
用户界面程序用于标识服务的一个字符串。

密码 = (字符串)
密码字符串。 如果使用本地系统之外的帐户这是必需的。
optionvalue
指定命名 optionname 参数的值。 请参阅 optionname 参考有关受支持的值的列表。 当字符串是将输入时,会出现空引号的使用,表示为空字符串中传递。 请注意没有 OptionValue 和等号之间的一个空格。

请注意 sc create 命令执行 CreateService API 函数的操作。

下面的示例创建名为"NewService"在计算机上的调用的服务的注册表项 \\ remotecomputer:
sc \\remotecomputer 创建 newservice binpath = c:\nt\system32\newserv.exe
请注意 Windows 2000、 Windows XP、 Windows Server 2003、 Windows Vista 和 Windows Server 2008 中, 在 binpath 位于 C:\Windows\System32\Newserv.exe。

默认情况下此服务将创建为与 SERVICE_DEMAND_START 的类型的 WIN32_SHARE_PROCESS。 它没有任何依赖项,并且 LocalSystem 安全上下文中运行。

下面的示例在本地计算机上创建该服务,为它自己的进程中运行的自动启动服务。 TDI 组上和 NetBIOS 服务,它有依赖项。 请注意您必须添加周围的空格分隔的依赖项列表的报价单。
sc 创建 newservice binpath = c:\nt\system32\newserv.exe type = 自己开始 = 自动取决于 ="+ tdi Netbios"
请注意 Windows 2000、 Windows XP、 Windows Server 2003、 Windows Vista 和 Windows Server 2008 中, 在 binpath 位于 C:\Windows\System32\Newserv.exe。

有关 Sc.exe 工具的进一步信息,请参阅资源工具包 sc dev.txt 文档。 本文档介绍了更详细的 Sc.exe。


这篇文章中的信息适用于:
Microsoft Windows NT Server 3.51
Microsoft Windows NT Server 4.0 Standard Edition
Microsoft Windows NT Server 4.0 Terminal Server(终端服务器)
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Professional Edition
Microsoft Windows Server 2003 Datacenter Edition
Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
Microsoft Windows Server 2003, Datacenter x64 Edition
Microsoft Windows Server 2003, Enterprise x64 Edition
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
Microsoft Windows Server 2003, Standard x64 Edition
Microsoft Windows Server 2003 Standard Edition
Windows Vista Home Basic
Windows Vista Home Basic N
Windows Vista Home Basic N 64-bit Edition
Windows Vista Business
Windows Vista Business 64-bit edition
Windows Vista Business N
Windows Vista Business N 64-bit Edition
Windows Vista Home Premium
Windows Vista Home Basic 64-bit edition
Windows Vista Home Premium 64-bit edition
Windows Vista Ultimate
Windows Vista Ultimate 64-bit edition
Microsoft Windows XP Home Edition
Microsoft Windows XP Professional Edition
Windows Server 2008 Standard
Windows Server 2008 Enterprise
Windows Server 2008 Datacenter

没有评论: