進程建立旗標
CreateProcess、CreateProcessAsUser、CreateProcessWithLogonW和CreateProcessWithTokenW函式會使用下列程式建立旗標。 它們可以在任何組合中指定,但未注明。
範例
BOOL creationResult;
creationResult = CreateProcess(
NULL, // No module name (use command line)
cmdLine, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, // creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&startupInfo, // Pointer to STARTUPINFO structure
&processInformation); // Pointer to PROCESS_INFORMATION structure
GitHub 上的 Windows 傳統範例 範例範例。
Flags
常數/值 | Description |
---|---|
|
與作業相關聯的進程子進程不會與作業相關聯。 如果呼叫進程未與作業相關聯,這個常數就不會有任何作用。 如果呼叫進程與作業相關聯,作業必須設定 JOB_OBJECT_LIMIT_BREAKAWAY_OK 限制。 |
|
新進程不會繼承呼叫進程的錯誤模式。 相反地,新進程會取得預設的錯誤模式。 這項功能特別適用于停用硬式錯誤的多執行緒殼層應用程式。 預設行為是讓新進程繼承呼叫端的錯誤模式。 設定此旗標會變更預設行為。 |
|
新的進程有新的主控台,而不是繼承其父代的主控台, (預設) 。 如需詳細資訊,請參閱 建立主控台。 此旗標不能與 DETACHED_PROCESS搭配使用。 |
|
新進程是新進程群組的根進程。 進程群組包含此根進程子代的所有進程。 新進程群組的進程識別碼與進程識別碼相同,此識別碼會在 lpProcessInformation 參數中傳回。
GenerateConsoleCtrlEvent函式會使用進程群組,以啟用將 CTRL+BREAK 訊號傳送至主控台進程的群組。 如果指定此旗標,將會針對新進程群組內的所有進程停用 CTRL+C 訊號。 如果使用 CREATE_NEW_CONSOLE指定,則會忽略此旗標。 |
|
此程式是在沒有主控台視窗的情況下執行的主控台應用程式。 因此,不會設定應用程式的主控台控制碼。 如果應用程式不是主控台應用程式,或與 CREATE_NEW_CONSOLE 或 DETACHED_PROCESS搭配使用,則會忽略此旗標。 |
|
此程式會以受保護的進程執行。 系統會限制受保護進程的存取權,以及受保護進程的執行緒。 如需進程如何與受保護進程互動的詳細資訊,請參閱 處理安全性和存取權限。 若要啟用受保護的進程,二進位檔必須具有特殊簽章。 此簽章是由 Microsoft 提供,但目前不適用於非 Microsoft 二進位檔。 目前有四個受保護的程式:媒體基礎、音訊引擎、Windows 錯誤報告和系統。 載入這些二進位檔的元件也必須簽署。 多媒體公司可以利用前兩個受保護的程式。 如需詳細資訊,請參閱 受保護媒體路徑的概觀。 Windows Server 2003 和 Windows XP: 不支援此值。 |
|
允許呼叫端執行子進程,略過通常會自動套用至進程的進程限制。 |
|
此旗標允許在Virtualization-Based安全性環境中執行的安全進程啟動。 |
|
只有在啟動以 16 位 Windows 為基礎的應用程式時,此旗標才有效。 如果設定,新的進程會在私人 Virtual DOS Machine (VDM) 中執行。 根據預設,所有 16 位 Windows 應用程式都會在單一共用 VDM 中以執行緒的形式執行。 個別執行的優點是當機只會終止單一 VDM;在相異 VM 中執行的任何其他程式會繼續正常運作。 此外,在個別 VM 中執行的 16 位 Windows 應用程式具有個別的輸入佇列。 這表示,如果一個應用程式暫時停止回應,個別 VM 中的應用程式會繼續接收輸入。 個別執行的缺點是需要更多記憶體才能這麼做。 只有當使用者要求 16 位應用程式應該在其自己的 VDM 中執行時,才應該使用此旗標。 |
|
只有在啟動以 16 位 Windows 為基礎的應用程式時,旗標才有效。 如果 WIN.INI Windows 區段中的 DefaultSeparateVDM 參數為 TRUE,則此旗標會覆寫參數。 新的程式會在共用的虛擬 DOS 機器中執行。 |
|
新進程的主要執行緒會以暫停狀態建立,而且在呼叫 ResumeThread 函式之前不會執行。 |
|
如果設定此旗標, lpEnvironment 所指向的環境區塊會使用 Unicode 字元。 否則,環境區塊會使用 ANSI 字元。 |
|
呼叫執行緒會啟動並偵錯新的進程。 它可以使用 WaitForDebugEvent 函式來接收所有相關的偵錯事件。 |
|
呼叫執行緒會啟動並偵錯新進程,以及新進程所建立的所有子進程。 它可以使用 WaitForDebugEvent 函式來接收所有相關的偵錯事件。 使用 DEBUG_PROCESS 的進程會成為偵錯鏈結的根目錄。 這會繼續,直到鏈結中的另一個 程式建立DEBUG_PROCESS為止。 如果這個旗標與 DEBUG_ONLY_THIS_PROCESS結合,呼叫端只會偵錯新的進程,而不是任何子進程。 |
|
針對主控台進程,新進程不會繼承其父代的主控台, (預設) 。 新的進程可以在稍後呼叫 AllocConsole 函式,以建立主控台。 如需詳細資訊,請參閱 建立主控台。 此值不能與 CREATE_NEW_CONSOLE搭配使用。 |
|
此程式是使用擴充啟動資訊所建立; lpStartupInfo 參數會指定 STARTUPINFOEX 結構。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
進程會繼承其父系的親和性。 如果父進程在多個 處理器群組中有線程,新進程會繼承父代使用中任意群組的群組相對親和性。 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支援這個值。 |
備註
在 32 位 Windows 上,16 位應用程式會由 ntvdm.exe 模擬,而不是以個別進程的形式執行。 因此,程式建立旗標會套用至 ntvdm.exe。 因為ntvdm.exe在執行前 16 位應用程式之後會持續存在,所以當您啟動另一個 16 位應用程式時,不會套用新的建立旗標,除了 建立新的CREATE_NEW_CONSOLE 和 CREATE_SEPARATE_WOW_VDM以外,這會建立新的ntvdm.exe。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows Server 2003 [僅限桌面應用程式] |
標頭 |
|