Создание метода класса Win32_Process
Метод класса CreateWMI создает новый процесс.
В этом разделе используется синтаксис MOF. Дополнительные сведения об использовании этого метода см. в разделе Вызов метода .
Синтаксис
uint32 Create(
[in] string CommandLine,
[in] string CurrentDirectory,
[in] Win32_ProcessStartup ProcessStartupInformation,
[out] uint32 ProcessId
);
Параметры
-
CommandLine [in]
-
Командная строка для выполнения. Система добавляет в командную строку символ NULL, при необходимости обрезая строку, чтобы указать, какой файл фактически использовался.
-
CurrentDirectory [in]
-
Текущий диск и каталог для дочернего процесса. Для строки требуется, чтобы текущий каталог разрешал в известный путь. Пользователь может указать абсолютный путь или путь относительно текущего рабочего каталога. Если этот параметр имеет значение NULL, новый процесс будет иметь тот же путь, что и вызывающий процесс. Этот параметр предоставляется в основном для оболочек, которые должны запускать приложение и указывать начальный диск и рабочий каталог приложения.
-
ProcessStartupInformation [in]
-
Конфигурация запуска процесса Windows. Дополнительные сведения см. в разделе Win32_ProcessStartup.
-
ProcessId [out]
-
Глобальный идентификатор процесса, который можно использовать для идентификации процесса. Значение является допустимым с момента создания процесса до момента его завершения.
Возвращаемое значение
Возвращает значение 0 (ноль), если процесс был успешно создан, и любое другое число, указывающее на ошибку. Дополнительные коды ошибок см. в разделе Константы ошибок WMI или WbemErrorEnum. Общие значения HRESULT см. в разделе Системные коды ошибок.
-
Успешное завершение (0)
-
Доступ запрещен (2)
-
Недостаточно привилегий (3)
-
Неизвестный сбой (8)
-
Путь не найден (9)
-
Недопустимый параметр (21)
-
Другое (22 4294967295)
Комментарии
Вы можете создать экземпляр класса Win32_ProcessStartup , чтобы настроить процесс перед вызовом этого метода.
Полный путь должен быть указан в случаях, когда программа, запускаемая, не находится в пути поиска Winmgmt.exe. Если созданный процесс пытается взаимодействовать с объектами в целевой системе без соответствующих прав доступа, он завершается без уведомления этого метода.
По соображениям безопасности метод Win32_Process.Create нельзя использовать для удаленного запуска интерактивного процесса.
Процессы, созданные с помощью метода Win32_Process.Create , ограничены объектом задания, если не указан флаг CREATE_BREAKAWAY_FROM_JOB . Дополнительные сведения см. в разделе Win32_ProcessStartup и __ProviderHostQuotaConfiguration.
Примеры
В следующем примере VBScript показано, как вызвать метод CIM, как если бы он был методом автоматизации SWbemObject.
on error resume next
set process = GetObject("winmgmts:Win32_Process")
result = process.Create ("notepad.exe",null,null,processid)
WScript.Echo "Method returned result = " & result
WScript.Echo "Id of new process is " & processid
if err <>0 then
WScript.Echo Err.Description, "0x" & Hex(Err.Number)
end if
В следующем примере Perl показано, как вызвать метод CIM, как если бы он был методом автоматизации SWbemObject.
use strict;
use Win32::OLE;
my ($process, $outParam, $processid, $inParam, $objMethod);
eval { $process =
Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2:Win32_Process"); };
if (!$@ && defined $process)
{
$objMethod = $process->Methods_("Create");
#Spawn an instance of inParameters and assign the values.
$inParam = $objMethod->inParameters->SpawnInstance_ if (defined $objMethod);
$inParam->{CommandLine} = "notepad.exe";
$inParam->{CurrentDirectory} = undef;
$inParam->{ProcessStartupInformation} = undef;
$outParam = $process->ExecMethod_("Create", $inParam) if (defined $inParam);
if ($outParam->{ReturnValue})
{
print STDERR Win32::OLE->LastError, "\n";
}
else
{
print "Method returned result = $outParam->{ReturnValue}\n";
print "Id of new process is $outParam->{ProcessId}\n"
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
В следующем примере кода VBScript создается процесс Блокнота на локальном компьютере. Win32_ProcessStartup используется для настройки параметров процесса.
Const SW_NORMAL = 1
strComputer = "."
strCommand = "Notepad.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
' Configure the Notepad process to show a window
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_NORMAL
' Create Notepad process
Set objProcess = objWMIService.Get("Win32_Process")
intReturn = objProcess.Create _
(strCommand, Null, objConfig, intProcessID)
If intReturn <> 0 Then
Wscript.Echo "Process could not be created." & _
vbNewLine & "Command line: " & strCommand & _
vbNewLine & "Return value: " & intReturn
Else
Wscript.Echo "Process created." & _
vbNewLine & "Command line: " & strCommand & _
vbNewLine & "Process ID: " & intProcessID
End If
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Пространство имен |
Root\CIMV2 |
MOF |
|
DLL |
|