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)
-
新建立的進程會獲得呼叫進程的系統預設錯誤模式,而不是繼承父進程的錯誤模式。 此旗標適用于已停用硬式錯誤的多執行緒殼層應用程式。
-
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) 應用程式。 若要同時指定前景和背景色彩,請將值加在一起。 例如,若要在藍色背景 (16) 上有紅色類型 (4) ,請將 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)
指出優先順序高於閒置但低於 Normal 的進程。
Above_Normal (32768)
表示優先順序高於 Normal 但低於 High 的進程。
ShowWindow
-
資料類型: uint16
-
存取類型:讀取/寫入
-
限定詞: MappingStrings (「Win32API|進程和執行緒結構|STARTUPINFO|wShowWindow「)
視窗如何向使用者顯示。 它可以是可在 ShowWindow函式的 nCmdShow參數中指定的任何值。
標題
-
資料類型: 字串
-
存取類型:讀取/寫入
-
限定詞: MappingStrings (「Win32API|進程和執行緒結構|STARTUPINFO|lpTitle「)
建立新的主控台視窗時,顯示在標題列中的文字;用於主控台進程。 如果 為 Null,則會使用可執行檔的名稱做為視窗標題。 對於未建立新主控台視窗的 GUI 或主控台進程,此屬性必須是 Null 。
WinstationDesktop
-
資料類型: 字串
-
存取類型:讀取/寫入
-
限定詞: MappingStrings (「Win32API|進程和執行緒結構|STARTUPINFO|lpDesktop「)
桌面的名稱,或進程桌面和視窗月臺的名稱。 字串中的反斜線表示字串同時包含桌面和視窗月臺名稱。 如果 WinstationDesktop 是 Null,新進程會繼承其父進程的桌面和視窗月臺。 如果 WinstationDesktop 是空字串,進程就不會繼承其父進程的桌面和視窗月臺。 系統會判斷是否必須建立新的桌面和視窗月臺。 視窗月臺是一個安全物件,其中包含剪貼簿、一組全域 Atom 和一組桌面物件。 指派給互動式使用者的登入會話的互動式視窗月臺也包含鍵盤、滑鼠和顯示裝置。 桌面是包含在視窗月臺內的安全物件。 桌面具有邏輯顯示介面,並包含視窗、功能表和勾點。 視窗月臺可以有多個桌面。 只有互動式視窗月臺的桌面可以看見並接收使用者輸入。
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 時,才會使用這個程式來建立重迭的視窗,如果 CreateWindow 的 nWidth 參數 CW_USEDEFAULT。
注意
無法獨立指定XSize和YSize。
Y
-
資料類型: 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時,才會使用這個程式來建立重迭的視窗,如果CreateWindow的nWidth參數CW_USEDEFAULT。
注意
無法獨立指定XSize和YSize。
備註
這個類別衍生自 Win32_MethodParameterClass。
概觀
Win32_ProcessCreate方法可讓您為電腦上執行的任何新進程設定啟動選項。 例如,您可以設定進程,使其在「隱藏」視窗中啟動,以防止使用者看到,而且可能會中斷。 如果進程在命令視窗中執行,您可以設定視窗的大小、標題和前景和背景色彩。
啟動選項是使用 Win32_ProcessStartup 類別來設定。 Win32_ProcessStartup 是方法類型類別;方法類型類別只存在,以便將資訊傳遞至方法。 在此情況下, 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 |
|
另請參閱