共用方式為


SHCREATEPROCESSINFOW 結構 (shellapi.h)

[SHCreateProcessAsUserW 不再在 Windows XP 或更新版本中實作。]

包含 SHCreateProcessAsUserW 建立進程所需的資訊。

語法

typedef struct _SHCREATEPROCESSINFOW {
  DWORD                 cbSize;
  ULONG                 fMask;
  HWND                  hwnd;
  LPCWSTR               pszFile;
  LPCWSTR               pszParameters;
  LPCWSTR               pszCurrentDirectory;
  HANDLE                hUserToken;
  LPSECURITY_ATTRIBUTES lpProcessAttributes;
  LPSECURITY_ATTRIBUTES lpThreadAttributes;
  BOOL                  bInheritHandles;
  DWORD                 dwCreationFlags;
  LPSTARTUPINFOW        lpStartupInfo;
  LPPROCESS_INFORMATION lpProcessInformation;
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;

成員

cbSize

類型: DWORD

這個 結構的大小,以位元組為單位。

fMask

類型: ULONG

旗標陣列,表示其他結構成員的內容和有效性。 這可以是下列值的組合。

SEE_MASK_CLASSKEY

使用檔案的類別登錄機碼。

SEE_MASK_CLASSNAME

使用檔案的類別名稱。

SEE_MASK_CONNECTNETDRV

驗證共用並連線到驅動器號。 pszFile 成員是網路上檔案的 UNC 路徑。

SEE_MASK_DOENVSUBST

展開任何環境變數。

SEE_MASK_FLAG_DDEWAIT

等候 DDE 交談在傳回之前終止。

SEE_MASK_FLAG_NO_UI

如果發生錯誤,請勿顯示錯誤消息框。

SEE_MASK_HMONITOR

在多監視系統上指定監視器時,請使用此旗標。

SEE_MASK_NOCLOSEPROCESS

應用程式將會關閉進程。 如果 lpProcessInformation 成員是有效的 PROCESS_INFORMATION 指標,而且 已設定SEE_MASK_NOCLOSEPROCESS當 SHCreateProcessAsUserW 傳回時,程式會保持開啟狀態。 PROCESS_INFORMATION 結構的 hProcesshThread 成員分別保存進程和線程句柄。 此旗標通常會設定為允許應用程式瞭解使用 SHCreateProcessAsUserW 建立的進程何時終止。 在某些情況下,例如透過 DDE 交談滿足執行時,不會傳回任何句柄。 當不再需要句柄時,呼叫應用程式會負責關閉句柄。 如果未設定此旗標,則會在 SHCreateProcessAsUserW 傳回之前關閉進程,即使 lpProcessInformation 是有效的指標也一樣。

SEE_MASK_NO_CONSOLE

為新進程建立主控台,而不是讓它繼承父代的主控台。 它相當於搭配 CreateProcess 使用 CREATE_NEW_CONSOLE 旗標。

SEE_MASK_UNICODE

表示 Unicode 應用程式。

hwnd

類型: HWND

父視窗句柄。

pszFile

類型: LPCWSTR

Null 終止 Unicode 字串的指標,指定 SHCreateProcessAsUserW 將執行 runas 指令動詞所指定的動作的可執行檔。 檔案的 類別必須支援 runas 動詞命令。

注意 如果路徑未隨附於檔名中,則會假設目前目錄。
 

pszParameters

類型: LPCWSTR

包含應用程式參數之 Null 終止 Unicode 字串的指標。 參數必須以空格分隔。

pszCurrentDirectory

類型: LPCWSTR

包含目前目錄的 Null 終止 Unicode 字串。

hUserToken

類型: HANDLE

可用來代表特定使用者的 存取令牌 。 當這些資料夾有多個使用者被視為屬於單一使用者時,就需要它。 呼叫應用程式必須具有特定使用者的適當安全性許可權,包括TOKEN_QUERY和TOKEN_IMPERSONATE,而且目前必須掛接使用者的登錄區。 如需訪問控制問題的進一步討論,請參閱 存取控制

lpProcessAttributes

類型: LPSECURITY_ATTRIBUTES

具有新進程之安全性描述項 之SECURITY_ATTRIBUTES 結構的指標。 它也會指定是否可以繼承子進程。 如果此參數設定為 NULL,則進程會有預設的安全性描述元,而且無法繼承句柄。

安全性警告: 使用安全性描述元不正確可能會危害應用程式的安全性。 如需詳細資訊,請參閱 SECURITY_ATTRIBUTES

lpThreadAttributes

類型: LPSECURITY_ATTRIBUTES

具有新線程之安全性描述元 之SECURITY_ATTRIBUTES 結構的指標。 它也會指定是否可以繼承子進程。 如果此參數設定為 NULL,則進程會有預設的安全性描述元,而且無法繼承句柄。

安全性警告: 使用安全性描述元不正確可能會危害應用程式的安全性。 如需詳細資訊,請參閱 SECURITY_ATTRIBUTES

bInheritHandles

類型: BOOL

指出新進程是否繼承來自呼叫進程的句柄。 如果設定為 TRUE,則呼叫進程中每個可繼承的開啟句柄都會由新進程繼承。 繼承的句柄的值和訪問許可權與原始句柄相同。

dwCreationFlags

類型: DWORD

控制進程建立和優先順序類別的旗標。 如需可用旗標的清單,請參閱 CreateProcessAsUser

lpStartupInfo

類型: LPSTARTUPINFOW

STARTUPINFO 結構的指標,指定新進程的主視窗應該如何出現。

lpProcessInformation

類型: LPPROCESS_INFORMATION

接收新進程相關信息 之PROCESS_INFORMATION 結構的指標。 將此成員設定為有效的結構指標,並在 fMask 成員中設定SEE_MASK_NOCLOSEPROCESS旗標,而且當函式傳回時,程式會保持開啟狀態。 PROCESS_INFORMATION 結構的 hProcesshThread 成員會分別保存進程和線程句柄。 將此成員設定為 NULL,而且會在函式傳回之前關閉進程。

備註

若要在 pszParameters 中包含雙引號,您必須以一對引號括住每個標記,如下列範例所示:

sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";

在此情況下,應用程式會收到三個參數:An、example:和 “quoted text”。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional、Windows XP [僅限桌面應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
標頭 shellapi.h

另請參閱

SHELLEXECUTEINFO