Win32_Service 类的 ResumeService 方法 (CIMWin32 WMI 提供程序)
ResumeServiceWMI 类方法尝试将引用的服务置于恢复状态。
本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法。
语法
uint32 ResumeService();
参数
此方法没有任何参数。
返回值
返回以下列表中列出的值之一,或指示错误的任何其他值。 有关其他错误代码,请参阅 WMI 错误常量 或 WbemErrorEnum。 有关常规 HRESULT 值,请参阅 系统错误代码。
-
0
-
已接受该请求。
-
1
-
不支持该请求。
-
2
-
用户没有必要的访问权限。
-
3
-
由于其他正在运行的服务依赖于该服务,不能停止该服务。
-
4
-
请求的控制代码无效或服务无法接受该控制代码。
-
5
-
无法将请求的控制代码发送到服务,因为服务的状态 (Win32_BaseService。状态 属性) 等于 0、1 或 2。
-
6
-
该服务尚未启动。
-
7
-
该服务未及时响应启动请求。
-
8
-
启动服务时出现未知失败。
-
9
-
找不到服务可执行文件的目录路径。
-
10
-
服务已在运行。
-
11
-
要添加新服务的数据库已锁定。
-
12
-
此服务所依赖的依赖项已从系统中删除。
-
13
-
该服务无法从依赖的服务中找到所需的服务。
-
14
-
已从系统禁用该服务。
-
15
-
服务没有在该系统上运行所需的正确身份验证。
-
16
-
正在从系统中删除此服务。
-
17
-
服务没有执行线程。
-
18
-
服务启动时具有循环依赖项。
-
19
-
服务以同一名称运行。
-
20
-
服务名称包含无效字符。
-
21
-
已将无效参数传递给服务。
-
22
-
运行此服务的帐户无效或缺少运行服务的权限。
-
23
-
系统的服务数据库中已存在该服务。
-
24
-
该服务目前在系统中已暂停。
备注
尽管停止的服务与暂停的服务之间似乎没有实际差异,但这两种状态与 SCM 不同。 已停止的服务是未运行且必须完成整个服务启动过程的服务。 但是,暂停的服务仍在运行,但已暂停其功能。 因此,暂停的服务不需要完成整个服务启动过程,但需要不同的过程才能恢复运行。
必须使用正确的方法来启动已停止的服务或恢复已暂停的服务。 在以下情况下,应使用 Win32_Service 方法 StartService 和 ResumeService :
- 如果某个服务当前已停止,则必须使用 StartService 方法重启它; ResumeService 无法启动当前已停止的服务。
- 如果服务已暂停,则必须使用 ResumeService。 如果在暂停的服务上使用 StartService 方法,则会收到消息“该服务已在运行”。但是,在将恢复服务控制代码发送到该服务之前,该服务将保持暂停状态。
示例
恢复已暂停的 VBScript 自动启动服务示例将重启已暂停的任何自动启动服务。
以下 VBScript 代码示例介绍如何从 Win32_Service 实例恢复暂停的服务。
注意
该服务必须支持暂停并已在运行。
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='Schedule'")
for each Service in ServiceSet
SupportsPause = Service.AcceptPause
if SupportsPause = true then
RetVal = Service.ResumeService()
if RetVal = 0 then
WScript.Echo "Service resumed"
else
if RetVal = 1 then
WScript.Echo "Pause not supported"
else WScript.Echo "An error occurred:" & RetVal
End If
End If
else
WScript.Echo "Service does not support pause"
end if
next
以下 Perl 代码示例介绍如何从 Win32_Service 实例恢复暂停的服务。
注意
该服务必须支持暂停并已在运行。
use strict;
use Win32::OLE;
my $ServiceSet;
eval { $ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\Root\\CIMv2")->
ExecQuery("SELECT * FROM Win32_Service WHERE Name='Schedule'"); };
if (!$@ && defined $ServiceSet)
{
foreach my $Service (in $ServiceSet)
{
my $SupportsPause = $Service->{AcceptPause};
if ($SupportsPause)
{
my $RetVal = $Service->ResumeService();
if ($RetVal == 0)
{
print "\nService resumed\n";
}
else
{
if ($RetVal == 1)
{
print STDERR "\nPause not supported\n";
}
else
{
print STDERR "\nAn error occurred: ", $RetVal, "\n";
}
}
}
else
{
print "\nService does not support pause\n";
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista |
最低受支持的服务器 |
Windows Server 2008 |
命名空间 |
Root\CIMv2 |
MOF |
|
DLL |
|