Win32_Service 类的 create 方法 (CIMWin32 WMI 提供程序)
CreateWMI 类方法创建新的系统服务。
本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法。
语法
uint32 Create(
[in] string Name,
[in] string DisplayName,
[in] string PathName,
[in] uint8 ServiceType,
[in] uint8 ErrorControl,
[in] string StartMode,
[in] boolean DesktopInteract,
[in] string StartName,
[in] string StartPassword,
[in] string LoadOrderGroup,
[in] string LoadOrderGroupDependencies[],
[in] string ServiceDependencies[]
);
参数
-
Name [in]
-
要安装到 Create 方法的服务的名称。 最大字符串长度为 256 个字符。 服务控制管理器数据库保留字符大小写,但服务名称比较始终不区分大小写。 (/) 的正斜杠和双反斜杠 (\) 是无效的服务名称字符。
-
DisplayName [in]
-
服务的显示名称。 此字符串的最大长度为 256 个字符。 名称在服务控制管理器中保留大小写。 DisplayName 比较始终不区分大小写。
约束:接受与 Name 参数相同的值。
示例:“Atdisk”。
-
PathName [in]
-
实现服务的可执行文件的完全限定路径。
示例:“\SystemRoot\System32\drivers\afd.sys”。
-
ServiceType [in]
-
提供给调用它们的进程的服务类型。
-
1 (0x1)
-
内核驱动程序
-
2 (0x2)
-
文件系统驱动程序
-
4 (0x4)
-
适配器
-
8 (0x8)
-
识别器驱动程序
-
16 (0x10)
-
自己的进程
-
32 (0x20)
-
共享进程
-
256 (0x100)
-
交互式进程
ErrorControl [in]
如果 Create 方法无法启动,则错误的严重性。 该值指示启动程序在发生故障时采取的操作。 所有错误都由系统记录。
0
不通知用户。
1
通知用户。
2
使用上一次已知正确的配置重新启动系统。
3
系统尝试从良好的配置开始。
StartMode [in]
Windows 基本服务的启动模式。
启动
操作系统加载程序启动的设备驱动程序。 此值只对驱动程序服务有效。
系统
由操作系统初始化过程启动的设备驱动程序。 此值只对驱动程序服务有效。
自动
服务控制管理器将在系统启动期间自动启动。
手动
当进程调用 StartService 方法时,服务控制管理器要启动的服务。
已禁用
无法再启动的服务。
DesktopInteract [in]
如果 为 true,则服务可以在桌面上创建或与窗口通信。
StartName [in]
运行服务的帐户名称。 根据服务类型,帐户名称可能采用 DomainName\Username 或用户主体名称 (UPN) 格式 (Username@DomainName) 。 服务进程在运行时使用这两种形式之一进行记录。 如果帐户属于内置域,则可以指定 .\Username。 如果指定 NULL ,则服务将作为 LocalSystem 帐户登录。 对于内核或系统级驱动程序, StartName 包含驱动程序对象名称 (,即 \FileSystem\Rdr 或 \Driver\Xns) I/O) 系统用于加载设备驱动程序的输入和输出 (。 如果指定 NULL ,则驱动程序使用 I/O 系统基于服务名称创建的默认对象名称运行。 示例:DWDOM\管理员。
StartPassword [in]
由 StartName 参数指定的帐户名的密码。 如果未更改密码,请指定 NULL 。 如果服务没有密码,请指定一个空字符串。
LoadOrderGroup [in]
与新服务关联的组名称。 加载顺序组包含在注册表中,并确定服务加载到操作系统中的顺序。 如果指针为 NULL 或指向空字符串,则服务不属于组。 组之间的依赖关系应在 LoadOrderGroupDependencies 参数中列出。 首先启动负载排序组列表中的服务,然后启动不属于负载排序组列表中的组中的服务,然后启动不属于组的服务。 注册表的负载排序组列表位于:
\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\控制\ServiceGroupOrder
LoadOrderGroupDependencies [in]
必须在此服务之前启动的负载排序组数组。 数组中的每个项都由 NULL 分隔,列表以两个 NULL 值结尾。 在 Visual Basic 或脚本中,可以传递 vbArray。 如果指针为 NULL 或指向空字符串,则服务没有依赖项。 组名称必须以 Winsvc.h 文件中定义的 SC_GROUP_IDENTIFIER (为前缀,) 字符,以将其与服务名称区分开来,因为服务和服务组共享相同的命名空间。 对组的依赖意味着,如果至少一个组成员在尝试启动组的所有成员后正在运行,则此服务可以运行。
ServiceDependencies [in]
包含此服务启动之前必须启动的服务名称的数组。 数组中的每个项都由 NULL 分隔,列表以两个 NULL 值结尾。 在 Visual Basic 或脚本中,可以传递 vbArray。 如果指针为 NULL,或者如果指针指向空字符串,则服务没有依赖项。 对服务的依赖意味着此服务仅当它所依赖的服务正在运行时才能运行。
返回值
返回以下列表中列出的值之一或指示错误的任何其他值之一。 有关其他错误代码,请参阅 WMI 错误常量 或 WbemErrorEnum。 有关常规 HRESULT 值,请参阅 系统错误代码。
-
0
-
已接受该请求。
-
1
-
不支持该请求。
-
2
-
用户没有必要的访问权限。
-
3
-
由于其他正在运行的服务依赖于该服务,不能停止该服务。
-
4
-
请求的控制代码无效或服务无法接受该控制代码。
-
5
-
无法将请求的控制代码发送到服务,因为服务的状态 (Win32_BaseService类的 State 属性) 等于 0、1 或 2。
-
6
-
该服务尚未启动。
-
7
-
该服务未及时响应启动请求。
-
8
-
启动服务时出现未知失败。
-
9
-
找不到服务可执行文件的目录路径。
-
10
-
服务已在运行。
-
11
-
要添加新服务的数据库已锁定。
-
12
-
此服务所依赖的依赖项已从系统中删除。
-
13
-
该服务无法从依赖的服务中找到所需的服务。
-
14
-
已从系统禁用该服务。
-
15
-
服务没有在该系统上运行所需的正确身份验证。
-
16
-
正在从系统中删除此服务。
-
17
-
服务没有执行线程。
-
18
-
服务启动时具有循环依赖项。
-
19
-
服务以同一名称运行。
-
20
-
服务名称包含无效字符。
-
21
-
已将无效参数传递给服务。
-
22
-
运行此服务的帐户无效或缺少运行服务的权限。
-
23
-
系统的服务数据库中已存在该服务。
-
24
-
该服务目前在系统中已暂停。
备注
服务通常采用两种方式之一进行安装:作为操作系统安装的一部分,或使用服务开发人员提供的安装程序。 但是,某些服务(尤其是内部创建的服务)可能没有安装程序。 在这些情况下,可以使用 Create 方法以编程方式安装服务。
尽管名称如此,但 Create 方法实际上不会创建服务;它只是安装现有服务。 若要使用此命令,需要将服务可执行文件复制到计算机,然后使用 Create 安装该服务。
Create 方法类似于 Change 方法。 在这两种情况下,服务的属性都作为参数传递给 方法。 与 Change 方法一起使用的参数一样,这些参数的传递顺序非常重要。
LoadOrderGroup 参数表示定义执行依赖项的系统服务的分组。 服务必须按加载顺序组指定的顺序启动,因为服务相互依赖。 这些依赖服务需要存在前面的服务才能正常运行。
示例
以下 VBScript 安装名为 DbService 的服务
Const OWN_PROCESS = 16
Const NOT_INTERACTIVE = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMIService.Get("Win32_BaseService")
errReturn = objService.Create ("DbService", "Personnel Database", _
"c:\windows\system32\db.exe", OWN_PROCESS ,2 ,"Automatic" , _
NOT_INTERACTIVE ,".\LocalSystem" ,"")
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista |
最低受支持的服务器 |
Windows Server 2008 |
命名空间 |
Root\CIMV2 |
MOF |
|
DLL |
|