共用方式為


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 傳回 時,進程將會保持開啟。 hProcesshThread 結構 PROCESS_INFORMATION 的成員分別保留進程和線程句柄。 此旗標通常會設定為允許應用程式找出使用 SHCreateProcessAsUser W 建立的進程何時終止。 在某些情況下,例如透過 DDE 交談滿足執行時,將不會傳回任何句柄。 呼叫端應用程式負責在不再需要句柄時關閉句柄。 如果未設定此旗標,則即使 lpProcessInformation 為有效的指標,SHCreateProcessAsUserW 傳回之前,進程也會關閉。

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

Access 令牌,可用來代表特定使用者。 當將資料夾視為屬於單一使用者時,需要有多個使用者。 呼叫端應用程式必須具有特定使用者的適當安全性許可權,包括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