Поделиться через


Класс Win32_ProcessStartup

Абстрактный класс WMIWin32_ProcessStartup представляет конфигурацию запуска процесса на основе Windows. Класс определяется как определение типа метода. Это означает, что он используется только для передачи информации в метод Create класса Win32_Process .

Приведенный ниже синтаксис является упрощенной версией кода MOF и включает все унаследованные свойства.

Синтаксис

[Abstract, UUID("{8502C4DB-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_ProcessStartup : Win32_MethodParameterClass
{
  uint32 CreateFlags;
  string EnvironmentVariables[];
  uint16 ErrorMode = 1;
  uint32 FillAttribute;
  uint32 PriorityClass;
  uint16 ShowWindow;
  string Title;
  string WinstationDesktop;
  uint32 X;
  uint32 XCountChars;
  uint32 XSize;
  uint32 Y;
  uint32 YCountChars;
  uint32 YSize;
};

Члены

Класс Win32_ProcessStartup имеет следующие типы членов:

Элемент Property

Класс Win32_ProcessStartup имеет следующие свойства.

CreateFlags

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Функции процессов и потоков | CreateProcess|dwCreationFlags")

Дополнительные значения, управляющие классом приоритета и созданием процесса. Следующие значения создания можно указать в любом сочетании, за исключением указанных ниже.

Debug_Process (1)

Если этот флаг установлен, вызывающий процесс обрабатывается как отладчик, а новый процесс выполняется отладка. Система уведомляет отладчик обо всех событиях отладки, происходящих в процессе отладки.

Debug_Only_This_Process (2)

Если этот флаг не установлен и вызывающий процесс выполняется отладка, новый процесс становится другим процессом отладки. Если вызывающий процесс не является процессом отладки, действия, связанные с отладкой, не выполняются.

Create_Suspended (4)

Основной поток нового процесса создается в приостановленном состоянии и не выполняется до вызова метода ResumeThread .

Detached_Process (8)

Для консольных процессов новый процесс не имеет доступа к консоли родительского процесса. Этот флаг нельзя использовать, если установлен флаг Create_New_Console .

Create_New_Console (16)

Этот новый процесс имеет новую консоль, а не наследование родительской консоли. Этот флаг нельзя использовать с флагом Detached_Process .

Create_New_Process_Group (512)

Этот новый процесс является корневым процессом новой группы процессов. В группу процессов входят все процессы, которые являются потомками этого корневого процесса. Идентификатор процесса новой группы процессов совпадает с идентификатором процесса, возвращаемым в свойстве ProcessID класса Win32_Process . Группы процессов используются методом GenerateConsoleCtrlEvent , чтобы разрешить отправку сигнала CTRL+C или CTRL+BREAK в группу консольных процессов.

Create_Unicode_Environment (1024)

Параметры среды, перечисленные в свойстве EnvironmentVariables , используют символы Юникода. Если этот флаг не задан, блок среды использует символы ANSI.

Create_Default_Error_Mode (67108864)

Вновь созданным процессам присваивается системный режим ошибок по умолчанию для вызывающего процесса, а не режим ошибок родительского процесса. Этот флаг полезен для многопоточных приложений оболочки, которые выполняются с отключенными жесткими ошибками.

CREATE_BREAKAWAY_FROM_JOB (16777216)

Используется для того, чтобы созданный процесс не ограничивался объектом задания.

EnvironmentVariables

Тип данных: строковый массив

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32Registry|HKEY_CURRENT_USER\\Environment")

Список параметров для конфигурации компьютера. Переменные среды указывают пути поиска для файлов, каталоги для временных файлов, параметры конкретного приложения и другие аналогичные сведения. Система поддерживает блок параметров среды для каждого пользователя и один для компьютера. Блок системной среды представляет переменные среды для всех пользователей определенного компьютера. Блок среды пользователя представляет переменные среды, которые система поддерживает для конкретного пользователя, и включает набор системных переменных среды. По умолчанию каждый процесс получает копию блока среды для родительского процесса. Как правило, это блок среды для пользователя, вошедшего в систему. Процесс может указывать различные блоки среды для своих дочерних процессов.

ErrorMode

Тип данных: uint16

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Функции ошибок| SetErrorMode")

На некоторых процессорах, отличных от x86, несовпадение ссылок на память вызывает исключение ошибки выравнивания. Флаг No_Alignment_Fault_Except позволяет управлять тем, будет ли операционная система автоматически исправлять такие ошибки выравнивания или делать их видимыми для приложения. На платформе с миллионами инструкций в секунду (MIPS) приложение должно явно вызывать SetErrorMode с флагом No_Alignment_Fault_Except , чтобы операционная система автоматически исправляла ошибки выравнивания.

Как операционная система обрабатывает несколько типов серьезных ошибок. Можно указать, что операционная система обрабатывает ошибки, или приложение может получать и обрабатывать ошибки.

По умолчанию операционная система может сделать ошибки выравнивания видимыми для приложения. Так как платформа x86 не делает ошибки выравнивания видимыми для приложения, флаг No_Alignment_Fault_Except не приводит к ошибке выравнивания операционной системы, даже если флаг не установлен. Состояние по умолчанию для SetErrorMode — установить для всех флагов значение 0 (ноль).

(1)

Значение по умолчанию

Fail_Critical_Errors (2)

Если этот флаг установлен, операционная система не отображает окно сообщения обработчика критических ошибок при возникновении такой ошибки. Вместо этого операционная система отправляет ошибку вызывающей процедуре.

No_Alignment_Fault_Except (4)

Если этот флаг установлен, операционная система автоматически исправляет ошибки выравнивания памяти и делает их невидимыми для приложения. Это делается для вызывающих процессов и процессов-потомков. Этот флаг применяется только к сокращенным вычислениям набора инструкций (RISC) и не влияет на процессоры x86.

No_GP_Fault_Error_Box (8)

Если этот флаг установлен, операционная система не отображает окно сообщения об ошибке общей защиты (GP) при возникновении ошибки GP. Этот флаг следует устанавливать только при отладке приложений, обрабатывающих ошибки GP.

No_Open_File_Error_Box (16)

Если этот флаг установлен, операционная система не отображает окно сообщения, если не удается найти файл. Вместо этого ошибка возвращается вызывающей процедуре. В настоящее время этот флаг игнорируется.

FillAttribute

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|dwFillAttribute")

Цвет текста и фона, если в консольном приложении создается новое окно консоли. Эти значения игнорируются в приложениях графического пользовательского интерфейса (GUI). Чтобы указать цвета переднего плана и фона, добавьте значения вместе. Например, чтобы иметь красный тип (4) на синем фоне (16), задайте для fillAttribute значение 20.

1

Foreground_Blue

2

Foreground_Green

4

Foreground_Red

8

Foreground_Intensity

16

Background_Blue

32

Background_Green

64

Background_Red

128

Background_Intensity

PriorityClass

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | JOBOBJECT_BASIC_LIMIT_INFORMATION| PriorityClass")

Класс priority нового процесса. Используйте это свойство для определения приоритетов расписания потоков в процессе. Если свойство остается пустым, класс приоритета по умолчанию имеет значение Normal, если только в процессе создания не задано значение Idle или Below_Normal. В таких случаях дочерний процесс получает класс приоритета по умолчанию вызывающего процесса.

Обычный (32)

Указывает на обычный процесс без особых потребностей в расписании.

Бездействуя (64)

Указывает процесс с потоками, которые выполняются только в том случае, если система простаивает и вытесняется потоками любого процесса, выполняющегося в классе с более высоким приоритетом. Примером может быть экранная заставка. Класс приоритета простоя наследуется дочерними процессами.

Высокий (128)

Указывает процесс, выполняющий критические по времени задачи, которые должны быть немедленно выполнены для правильного выполнения. Потоки процесса класса с высоким приоритетом вытесняют потоки процессов класса с нормальным приоритетом или бездействующего приоритета. Например, список задач Windows, который должен быстро реагировать при вызове пользователем независимо от нагрузки на операционную систему. Будьте внимательны при использовании класса с высоким приоритетом, так как высокоприоритетное приложение, привязанное к ЦП, может использовать почти все доступные циклы. Только приоритет в режиме реального времени вытесняет потоки, заданные на этом уровне.

Реальное время (256)

Указывает процесс, имеющий наивысший возможный приоритет. Потоки процесса класса с приоритетом в реальном времени вытесняют потоки всех других процессов, включая потоки с высоким приоритетом и процессы операционной системы, выполняющие важные задачи. Например, процесс в режиме реального времени, который выполняется в течение более чем очень короткого интервала, может привести к тому, что кэши диска не будут очищаться или мышь перестает отвечать на запросы.

Below_Normal (16384)

Указывает процесс, приоритет которого выше простоя, но ниже обычного.

Above_Normal (32768)

Указывает процесс, приоритет которого выше обычного, но ниже, чем высокий.

Showwindow

Тип данных: uint16

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|wShowWindow")

Как окно отображается для пользователя. Это может быть любое из значений, которые можно указать в параметре nCmdShow для функции ShowWindow .

Заголовок

Тип данных: string

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|lpTitle")

Текст, отображаемый в заголовке окна при создании нового окна консоли; используется для консольных процессов. Если значение РАВНО NULL, в качестве заголовка окна используется имя исполняемого файла. Это свойство должно иметь значение NULL для графических интерфейсов или консольных процессов, которые не создают новое окно консоли.

WinstationDesktop

Тип данных: string

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|lpDesktop")

Имя рабочего стола или имя рабочего стола и оконной станции для процесса. Обратная косая черта в строке указывает, что строка содержит имена рабочих столов и оконных станций. Если winstationDesktop имеет значение NULL, новый процесс наследует станцию рабочего стола и окна родительского процесса. Если WinstationDesktop является пустой строкой, процесс не наследует станцию рабочего стола и окна родительского процесса. Система определяет, нужно ли создать новый рабочий стол и оконную станцию. Оконная станция — это безопасный объект, содержащий буфер обмена, набор глобальных атомов и группу объектов рабочего стола. Станция интерактивного окна, назначенная сеансу входа интерактивного пользователя, также содержит клавиатуру, мышь и устройство отображения. Рабочий стол — это защищенный объект, содержащийся в оконной станции. Рабочий стол имеет логическую область отображения и содержит окна, меню и перехватчики. Оконная станция может иметь несколько рабочих столов. Только рабочие столы интерактивной оконной станции могут быть видимы и получать данные, введенные пользователем.

X

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|dwX")

Смещение по оси X верхнего левого угла окна при создании нового окна в пикселях. Смещения находятся в левом верхнем углу экрана. Для процессов графического пользовательского интерфейса указанная позиция используется при первом вызове нового процесса CreateWindow для создания перекрывающегося окна, если параметр Xэлемента CreateWindowCW_USEDEFAULT.

[! Примечание X]
и Y нельзя указать независимо.

 

XCountChars

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO| XCountChars")

Ширина буфера экрана в символьных столбцах. Это свойство используется для процессов, создающих окно консоли, и игнорируется в процессах графического пользовательского интерфейса.

Примечание

XCountChars и YCountChars нельзя указать независимо друг от друга.

 

XSize

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|dwXSize")

Ширина в пикселях окна при создании нового окна. Для процессов графического пользовательского интерфейса этот параметр используется только при первом вызове метода CreateWindow для создания перекрывающегося окна, если параметр nWidth объекта CreateWindowCW_USEDEFAULT.

Примечание

XSize и YSize нельзя указать независимо друг от друга.

 

да

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры процессов и потоков | STARTUPINFO|dwY")

Смещение в пикселях верхнего левого угла окна при создании нового окна. Смещения находятся в левом верхнем углу экрана. Для процессов графического пользовательского интерфейса указанная позиция используется при первом вызове нового процесса CreateWindow для создания перекрывающегося окна, если параметр ycreateWindowимеет значение CW_USEDEFAULT.

[! Примечание X]
и Y нельзя указать независимо.

 

YCountChars

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| | Структуры процессов и потоков| STARTUPINFO| YCountChars")

Высота буфера экрана в строках символов. Это свойство используется для процессов, создающих окно консоли, но игнорируется в процессах графического пользовательского интерфейса.

Примечание

XCountChars и YCountChars нельзя указать независимо друг от друга.

 

YSize

Тип данных: uint32

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| | Структуры процессов и потоков| STARTUPINFO|dwYSize")

Высота в пикселях окна при создании нового окна. Для процессов с графическим интерфейсом этот параметр используется только при первом вызове CreateWindow для создания перекрывающегося окна, если параметр nWidthэлемента CreateWindowCW_USEDEFAULT.

Примечание

XSize и YSize нельзя указать независимо друг от друга.

 

Комментарии

Этот класс является производным от Win32_MethodParameterClass.

Общие сведения

Метод Win32_ProcessCreate позволяет настроить параметры запуска для любого нового процесса, запущенного на компьютере. Например, можно настроить процесс таким образом, чтобы он запускал в "скрытом" окне, что не позволяет пользователю видеть и, возможно, прерывать его. Если процесс выполняется в командном окне, можно настроить размер, заголовок, цвета переднего плана и фона окна.

Параметры запуска настраиваются с помощью класса Win32_ProcessStartup . Win32_ProcessStartup является классом Method Type; Класс Method Type существует только для передачи сведений в метод. В этом случае все свойства экземпляра Win32_ProcessStartup передаются экземпляру Win32_Process.

Использование Win32_ProcessStartup

  1. Создайте экземпляр Win32_ProcessStartup.
  2. Настройте свойства нового экземпляра.
  3. Включите экземпляр как часть метода Win32_Process Create.

Например, если вы создали экземпляр Win32_ProcessStartup с именем objConfig, необходимо передать имя объекта в метод Create следующим образом:

errReturn = objProcess.Create("Database.exe", null, objConfig, intProcessID)

Примеры

Класс Win32_ProcessStartup можно использовать для настройки различных параметров запуска для процесса. Эти параметры включают, помимо прочего, такие вещи, как создание процесса в скрытом окне и создание процесса с более высоким приоритетом. Следующий VBScript создает процесс в скрытом окне.

Const HIDDEN_WINDOW = 12
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID)

Следующий VBScript создает процесс с более высоким приоритетом.

Const ABOVE_NORMAL = 32768
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = ABOVE_NORMAL
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
objProcess.Create "Database.exe", Null, objConfig, intProcessID

В следующем примере кода 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
CIMWin32.mof
DLL
CIMWin32.dll

См. также раздел

Win32_MethodParameterClass

Классы операционной системы

Win32_Process

__ProviderHostQuotaConfiguration

Задачи WMI: процессы