WSH + WMI. Примеры. Класс Win32_Process
Класс возвращают экземпляр активной в настоящее время операционной системы и содержит сведения о этой системе, ее состоянии и настройках.
class Win32_Process : CIM_Process
{
string Caption;
string CommandLine;
string CreationClassName;
datetime CreationDate;
string CSCreationClassName;
string CSName;
string Description;
string ExecutablePath;
uint16 ExecutionState;
string Handle;
uint32 HandleCount;
datetime InstallDate;
uint64 KernelModeTime;
uint32 MaximumWorkingSetSize;
uint32 MinimumWorkingSetSize;
string Name;
string OSCreationClassName;
string OSName;
uint64 OtherOperationCount;
uint64 OtherTransferCount;
uint32 PageFaults;
uint32 PageFileUsage;
uint32 ParentProcessId;
uint32 PeakPageFileUsage;
uint64 PeakVirtualSize;
uint32 PeakWorkingSetSize;
uint32 Priority = NULL;
uint64 PrivatePageCount;
uint32 ProcessId;
uint32 QuotaNonPagedPoolUsage;
uint32 QuotaPagedPoolUsage;
uint32 QuotaPeakNonPagedPoolUsage;
uint32 QuotaPeakPagedPoolUsage;
uint64 ReadOperationCount;
uint64 ReadTransferCount;
uint32 SessionId;
string Status;
datetime TerminationDate;
uint32 ThreadCount;
uint64 UserModeTime;
uint64 VirtualSize;
string WindowsVersion;
uint64 WorkingSetSize;
uint64 WriteOperationCount;
uint64 WriteTransferCount;
};
Методы
Класс Win32_Process имеет следующие методы:Метод | Описание |
AttachDebugger | Запуск отладчика, который установлен в система по умолчанию для отладки системы. |
Create | Создает новый процесс. |
GetAvailableVirtualSize | Получает текущий размер в байтах, свободной виртуального адресного пространства для этого процесса. |
GetOwner | Получает имя пользователя и имя домена, от которого процесс запущен. |
GetOwnerSid | Получает идентификатор безопасности (SID) для владельца процесса. |
SetPriority | Изменяет приоритет выполнения процесса. |
Terminate | Завершает процесс |
Метод AttachDebugger класса Win32_Process
Метод AttachDebugger позволяет запустить отладчик, который установлен в системе по умолчанию.
Не имеет параметров.
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Пользователь не имеет доступа к запрашиваемой информации. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
Метод Create класса Win32_Process
Метод создает новый процесс.
Параметры:
CommandLine - Командная строка для выполнения
CurrentDirectory - Текущий диск и каталог для дочернего процесса.
ProcessStartupInformation - начальная конфигурация процесса, при отсутствии параметра будет приниматься пустая строка.
ProcessId - Глобальный идентификатор процесса, который может быть использован для идентификации процесса.
Первые три параметра являются входящими.
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Доступ Закрыт. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
По соображениям безопасности Метод Win32_Process.Create не может быть использован для запуска интерактивного процесса дистанционно.
Минимальная клиентская ОС - Windows Vista
Минимальная серверная ОС - Windows Server 2003
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
Метод GetAvailableVirtualSize класса Win32_Process
Получает текущий размер в байтах, свободной виртуального адресного пространства для этого процесса.Параметры.
Параметр AvailableVirtualSize возвращает свободное пространство виртуальных адресов, доступных для данного процесса.
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Доступ Закрыт. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
Другие коды | Коды системных ошибок. |
Минимальная клиентская ОС - Windows 8.1
Минимальная серверная ОС - Windows Server 2012 R2
Метод GetOwner класса Win32_Process
Метод извлекает имя пользователя и имя домена, при которых процесс запущен.Параметры.
GetOwner(User, Domain)
user - Возвращает имя пользователя-владельца этого процесса.
Domain - Возвращает доменное имя, под которым этот процесс работает.
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Доступ Закрыт. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
Другие коды | Коды системных ошибок. |
strComputer = "."
Set colProcesses = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2").ExecQuery("Select * from Win32_Process")
For Each objProcess in colProcesses
Return = objProcess.GetOwner(strNameOfUser)
If Return <> 0 Then
Wscript.Echo "Could not get owner info for process " & _
objProcess.Name & VBNewLine _
& "Error = " & Return
Else
Wscript.Echo "Process " _
& objProcess.Name & " is owned by " _
& "\" & strNameOfUser & "."
End If
Next
Минимальная клиентская ОС - Windows Vista
Минимальная серверная ОС - Windows Server 2003
Метод GetOwnerSid класса Win32_Process
Метод возвращает один параметр, в котором будет храниться идентификатор безопасности (Security IDentifier, SID) владельца процессаПараметры.
GetOwnerSid(Sid)
Sid - Возвращает дескриптор идентификатор безопасности для данного процесса.
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Доступ Закрыт. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
Другие коды | Коды системных ошибок. |
Минимальная клиентская ОС - Windows Vista
Минимальная серверная ОС - Windows Server 2003
Метод SetPriority класса Win32_Process
Метод пытается изменить приоритет выполнения процесса.SetPriority(Priority)
Параметры.
Параметр Priority принимает следующие значения:
Значение | Описание |
64 (0x40) | Для процессов, которые выполняются только при простое системы. |
16384 (0x4000) | Ниже нормы. |
32 (0x20) | Нормальный . |
32768 (0x8000) | Выше нормы. |
128 (0x80) | Высокий приоритет. |
256 (0x100) | Максимально возможный приоритет. |
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Доступ Закрыт. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
Другие коды | Коды системных ошибок. |
Минимальная клиентская ОС - Windows Vista
Минимальная серверная ОС - Windows Server 2003
Метод Terminate класса Win32_Process
Метод завершает процесс и все его дочерние процессы.Terminate(Reason)
Параметры.
Reason - Код завершения процесса.
Возвращаемое значение:
Код возврата | Описание |
0 | Успешное завершение. |
2 | Доступ Закрыт. |
3 | Пользователь не имеет достаточных привилегий. |
8 | Неизвестная ошибка. |
9 | Заданного пути не существует. |
21 | Указанный параметр не является допустимым. |
Другие коды | Коды системных ошибок. |
Минимальная клиентская ОС - Windows Vista
Минимальная серверная ОС - Windows Server 2003
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
Свойства
Ниже будут описаны ряд свойств класса Win32_DiskDrive.- Caption
- Только для чтения. Краткое описание объекта.
- CommandLine
-
Только для чтения.Командная строка используемая для запуска процесса, если это применимо.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_Process",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_Process instance" Wscript.Echo "-----------------------------------" Wscript.Echo "CommandLine: " & objItem.CommandLine Next
- CreationClassName
-
Только для чтения. Имя класса, который создал процесс.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_Process",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_Process instance" Wscript.Echo "-----------------------------------" Wscript.Echo "CreationClassName: " & objItem.CreationClassName Next
- CreationDate
- Только для чтения. Дата начала выполнения процесса.
- CSCreationClassName
- Только для чтения. Выводит имя класса.
- CSName
- Только для чтения. Имя компьютера, на котором запущен процесс.
- Description
- Только для чтения. Описание объекта.
- ExecutablePath
- Только для чтения. Путь к исполняемому файлу процесса.
- ExecutionState
-
Только для чтения.
Код Описание 0 Unknown 1 Other 2 Ready 3 Running. 4 Blocked 5 Suspended Blocked 6 УSuspended Ready.
- Handle
- Только для чтения. Идентификатор процесса.
- HandleCount
- Только для чтения. Общее количество открытых дескрипторов, принадлежащих процессу.
- InstallDate
- Только для чтения. Дата создания объекта.
Объект может быть создан и без записи значения в это свойство.
- KernelModeTime
- Только для чтения. Время работы в режиме ядра.
- MaximumWorkingSetSize
- Только для чтения. Максимальное количество страниц памяти, выделенных процессу.
- MinimumWorkingSetSize
- Только для чтения. Минимальное количество страниц памяти, выделенных процессу.
- Name
- Только для чтения. Имя исполняемого файла, отвечающего за процесс.
- OSCreationClassName
- Только для чтения. Имя класса.
- OSName
- Только для чтения. Имя ОС.
- OtherOperationCount
- Только для чтения. Число выполненных операций ввода/вывода, отличных от операции чтения или записи.
- OtherTransferCount
- Только для чтения. Объем данных, передаваемых во время операций OtherOperationCount.
- PageFaults
- Только для чтения. Количество сгенерированных страниц памяти.
- PageFileUsage
- Только для чтения. Суммарный размер файла подкачки, который процесс используете в настоящее время.
- ParentProcessID
- Только для чтения. Идентификатор родительского процесса .
- PeakPageFileUsage
-
Только для чтения. Максимальный размер файла подкачки,
который использовался во время работы процесса.
- PeakVirtualSize
- Только для чтения. Максимальная виртуальное адресное пространство которое использует процесс.
- PeakWorkingSetSize
- Только для чтения. Пик размера рабочего набора процесса.
- Priority
-
Только для чтения. Неужели догадались? Таки да, это приоритет.
Значения приоритета может варьироваться от 0 (нуля),
что является самым низким приоритетом до 31,
который является наивысшим приоритетом.
- PrivatePageCount
- Только для чтения. Текущее количество выделенных страниц, которые доступны для процесса.
- ProcessId
-
Только для чтения. Числовой идентификатор используется, чтобы различать один процесс от другого.
ProcessID действителен с момента создания процесса до его завершения.
По окончании процесса, тот же цифровой идентификатор может быть назначен новому процессу.
Таким образом, контроль наличия процесса только по его ProcessID может привести
к неверному результату.
- ReadOperationCount
- Только для чтения. Количество операций чтения, которые выполнил процесс.
- ReadTransferCount
- Только для чтения. Размен прочитанных данных.
- SessionId
-
Только для чтения. Уникальный идентификатор,
который операционная система генерирует, когда сессия создается.
- Status
- Только для чтения. Опять догадались? А вот и нет! Это свойство не реализовано. Всегда NULL.
- ThreadCount
- Только для чтения. Количество активных потоков в процессе.
- UserModeTime
-
Только для чтения. Время в режиме пользователя, в 100 наносекундных единицах.
Если эта информация не доступна, получаемое значение 0 (ноль).
- VirtualSize
- Только для чтения. Текущий размер виртуального адресного пространства, которое использует процесс.
- WindowsVersion
- Только для чтения. Версия Windows, в которой запущен процесс.
- WorkingSetSize
-
Только для чтения. Объем памяти в байтах, который необходим процессу для эффективной работы
в операционной системе, которая использует страничное управление памятью.
- WriteOperationCount
- Только для чтения. Количество операций записи, которые выполнил процесс.
- WriteTransferCount
- Только для чтения. Размен записанных данных.
Примеры
var objWMI, colItems, objItem;
var list = "Список процессов Windows\n\n";
objWMI = GetObject("winmgmts:\\\\.\\root\\cimv2");
for (colItems= new Enumerator(objWMI.ExecQuery
("Select * from Win32_Process"));
!colItems.atEnd(); colItems.moveNext()){
objItem = colItems.item();
grt=objItem.ExecutablePath;
if (grt != null) list += grt+'\\';
list += objItem.Name + "\t\t" + objItem.ProcessId + "\n";
}
WScript.Echo(list);
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
' Obtain an instance of the the class
' using a key property value.
Set objShare = objWMIService.Get("Win32_Process.Handle='988'")
' no InParameters to define
' Execute the method and obtain the return status.
' The OutParameters object in objOutParams
' is created by the provider.
Set objOutParams = objWMIService.ExecMethod("Win32_Process.Handle='988'", "GetOwner")
' List OutParams
Wscript.Echo "Out Parameters: "
Wscript.echo "Domain: " & objOutParams.Domain
Wscript.echo "ReturnValue: " & objOutParams.ReturnValue
Wscript.echo "User: " & objOutParams.User
Более подробно о классе Win32_Process смотрите на MSDN.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуетс¤ регистраци¤).