Win32_ProcessStartup 类
Win32_ProcessStartup抽象 WMI 类表示基于 Windows 的进程启动配置。 类定义为方法类型定义,这意味着它仅用于将信息传递给 Win32_Process 类的 Create 方法。
以下语法从托管对象格式 (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 类具有以下类型的成员:
属性
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)
-
此新进程是新进程组的根进程。 进程组包括此根进程的后代的所有进程。 新进程组的进程标识符与 Win32_Process 类的 ProcessID 属性中返回的进程标识符相同。 GenerateConsoleCtrlEvent 方法使用进程组,以便向一组控制台进程发送 CTRL+C 信号或 CTRL+BREAK 信号。
-
Create_Unicode_Environment (1024)
-
EnvironmentVariables 属性中列出的环境设置使用 Unicode 字符。 如果未设置此标志,则环境块将使用 ANSI 字符。
-
Create_Default_Error_Mode (67108864)
-
为新创建的进程提供调用进程的系统默认错误模式,而不是继承父进程的错误模式。 此标志适用于在运行时禁用硬错误的多线程 shell 应用程序。
-
CREATE_BREAKAWAY_FROM_JOB (16777216)
-
用于创建的进程不受作业对象限制。
EnvironmentVariables
-
数据类型: 字符串 数组
-
访问类型:读/写
-
限定符: MappingStrings (“Win32Registry|HKEY_CURRENT_USER\\Environment")
计算机配置的设置列表。 环境变量指定文件的搜索路径、临时文件的目录、特定于应用程序的选项和其他类似信息。 系统为每个用户维护一个环境设置块,为计算机维护一个环境设置块。 系统环境块表示特定计算机所有用户的环境变量。 用户的环境块表示系统为特定用户维护的环境变量,包括系统环境变量集。 默认情况下,每个进程都会为其父进程接收环境块的副本。 通常,这是登录用户的环境块。 进程可以为其子进程指定不同的环境块。
ErrorMode
-
数据类型: uint16
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|错误函数 |SetErrorMode“)
在某些非 x86 处理器上,未对齐的内存引用会导致对齐错误异常。 使用No_Alignment_Fault_Except标志可以控制操作系统是否自动修复此类对齐错误,或使其对应用程序可见。 在 MIPS) 平台 (每秒数百万条指令中,应用程序必须使用No_Alignment_Fault_Except标志显式调用 SetErrorMode,以便操作系统自动修复对齐错误。
操作系统如何处理多种类型的严重错误。 可以指定操作系统处理错误,或者应用程序可以接收和处理错误。
默认设置是操作系统使对齐错误对应用程序可见。 由于 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“)
新进程的优先级类。 使用此属性可确定进程中线程的计划优先级。 如果该属性保留为 null,则优先级类默认为 Normal ,除非创建过程的优先级类为 Idle 或 Below_Normal。 在这些情况下,子进程接收调用进程的默认优先级类。
正常 (32)
指示没有特殊计划需求的正常进程。
空闲 (64)
指示一个进程,其线程仅在系统处于空闲状态时运行,并且被在较高优先级类中运行的任何进程的线程抢占。 例如,屏幕保护程序。 空闲优先级类由子进程继承。
高 (128)
指示执行必须立即执行才能正确运行的时间关键型任务的进程。 高优先级类进程的线程会抢占正常优先级或空闲优先级类进程的线程。 例如,Windows 任务列表,无论操作系统上的负载如何,它都必须在用户调用时快速响应。 使用高优先级类时要格外小心,因为高优先级类 CPU 绑定应用程序几乎可以使用所有可用的周期。 只有实时优先级会抢占设置为此级别的线程。
实时 (256)
指示具有最高优先级的进程。 实时优先级类进程的线程会抢占所有其他进程的线程,包括高优先级线程和执行重要任务的操作系统进程。 例如,执行超过非常短的时间间隔的实时进程可能会导致磁盘缓存无法刷新,或导致鼠标无响应。
Below_Normal (16384)
指示优先级高于“空闲”但低于“正常”的进程。
Above_Normal (32768)
指示优先级高于 Normal 但低于 High 的进程。
ShowWindow
-
数据类型: uint16
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|wShowWindow“)
如何向用户显示窗口。 它可以是在 ShowWindow 函数的 nCmdShow 参数中指定的任何值。
标题
-
数据类型: string
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|lpTitle“)
创建新控制台窗口时标题栏中显示的文本;用于控制台进程。 如果 为 NULL,则将可执行文件的名称用作窗口标题。 对于不创建新控制台窗口的 GUI 或控制台进程,此属性必须为 NULL 。
WinstationDesktop
-
数据类型: string
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|lpDesktop“)
桌面的名称或进程的桌面和窗口工作站的名称。 字符串中的反斜杠指示字符串同时包含桌面和窗口工作站名称。 如果 WinstationDesktop 为 NULL,则新进程将继承其父进程的桌面和窗口工作站。 如果 WinstationDesktop 为空字符串,则进程不会继承其父进程的桌面和窗口工作站。 系统确定是否必须创建新的桌面和窗口工作站。 窗口工作站是包含剪贴板、一组全局原子和一组桌面对象的安全对象。 分配给交互式用户的登录会话的交互式窗口站还包含键盘、鼠标和显示设备。 桌面是窗口工作站中包含的安全对象。 桌面具有逻辑显示图面,并包含窗口、菜单和挂钩。 一个窗口工作站可以有多个桌面。 只能显示交互式窗口工作站的桌面并接收用户输入。
X
-
数据类型: uint32
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|dwX“)
创建新窗口时窗口左上角的 X 偏移量(以像素为单位)。 偏移量从屏幕左上角开始。 对于 GUI 进程,如果 createWindow 的 X 参数CW_USEDEFAULT,则新进程首次调用 CreateWindow 以创建重叠窗口时使用指定位置。
[!注释 X]
和 Y 不能单独指定。
XCountChars
-
数据类型: uint32
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO |XCountChars“)
字符列中的屏幕缓冲区宽度。 此属性用于创建控制台窗口的进程,在 GUI 进程中被忽略。
注意
XCountChars 和 YCountChars 不能单独指定。
XSize
-
数据类型: uint32
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|dwXSize“)
如果创建新窗口,则为窗口的像素宽度。 对于 GUI 进程,如果 createWindow 的 nWidth 参数CW_USEDEFAULT,则仅在新进程首次调用 CreateWindow 以创建重叠窗口时使用此方法。
注意
不能单独指定 XSize 和 YSize。
是
-
数据类型: uint32
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|dwY“)
创建新窗口时窗口左上角的像素偏移量。 偏移量从屏幕左上角开始。 对于 GUI 进程,如果 createWindow 的 y 参数CW_USEDEFAULT,则新进程首次调用 CreateWindow 以创建重叠窗口时,将使用指定位置。
[!注释 X]
和 Y 不能单独指定。
YCountChars
-
数据类型: uint32
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO |YCountChars“)
字符行中的屏幕缓冲区高度。 此属性用于创建控制台窗口的进程,但在 GUI 进程中被忽略。
注意
XCountChars 和 YCountChars 不能单独指定。
YSize
-
数据类型: uint32
-
访问类型:读/写
-
限定符: MappingStrings (“Win32API|进程和线程结构 |STARTUPINFO|dwYSize“)
如果创建新窗口,则为窗口的像素高度。 对于 GUI 进程,如果 createWindow 的 nWidth 参数CW_USEDEFAULT,则仅在新进程首次调用 CreateWindow 以创建重叠窗口时使用此方法。
注意
不能单独指定 XSize 和 YSize。
备注
此类派生自 Win32_MethodParameterClass。
概述
使用 Win32_ProcessCreate 方法可以为计算机上运行的任何新进程配置启动选项。 例如,可以配置一个进程,使其在“隐藏”窗口中启动,从而防止用户看到并可能中断它。 如果进程在命令窗口中运行,则可以配置窗口的大小、标题以及前景和背景色。
启动选项是使用 Win32_ProcessStartup 类配置的。 Win32_ProcessStartup 是 Method Type 类;方法类型类的存在只是为了将信息传递给方法。 在这种情况下, Win32_ProcessStartup 实例的所有属性都传递给 Win32_Process 实例。
使用 Win32_ProcessStartup
- 创建 Win32_ProcessStartup 实例。
- 配置新实例的属性。
- 将 实例作为 Win32_Process Create 方法的一部分包含在内。
例如,如果已创建名为 objConfig 的Win32_ProcessStartup 实例,则会在 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 |
|
DLL |
|
另请参阅