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 構造体の hProcess メンバーと hThread メンバーは、それぞれプロセス ハンドルとスレッド ハンドルを保持します。 通常、このフラグは、 SHCreateProcessAsUserW で作成されたプロセスがいつ終了したのかをアプリケーションが確認できるように設定されます。 場合によっては、DDE 会話を通じて実行が満たされた場合など、ハンドルは返されません。 呼び出し元のアプリケーションは、ハンドルが不要になったときにハンドルを閉じる役割を担います。 このフラグが設定されていない場合、lpProcessInformation が有効なポインターであっても、SHCreateProcessAsUserW が戻る前にプロセスが閉じられます。
SEE_MASK_NO_CONSOLE
親のコンソールを継承するのではなく、新しいプロセス用のコンソールを作成します。 これは、 CreateProcess で CREATE_NEW_CONSOLE フラグを使用することと同じです。
SEE_MASK_UNICODE
Unicode アプリケーションを示します。
hwnd
型: HWND
親ウィンドウ ハンドル。
pszFile
種類: LPCWSTR
SHCreateProcessAsUserW が runas 動詞で指定されたアクションを実行する実行可能ファイルを指定する、null で終わる Unicode 文字列へのポインター。 runas 動詞は、ファイルの クラスでサポートされている必要があります。
pszParameters
種類: LPCWSTR
アプリケーション パラメーターを含む null で終わる Unicode 文字列へのポインター。 パラメーターはスペースで区切る必要があります。
pszCurrentDirectory
種類: LPCWSTR
現在のディレクトリを含む null で終わる Unicode 文字列。
hUserToken
型: HANDLE
特定のユーザーを表すために使用できる アクセス トークン 。 1 人のユーザーに属していると扱われるフォルダーに複数のユーザーが存在する場合に必要です。 呼び出し元のアプリケーションには、TOKEN_QUERYやTOKEN_IMPERSONATEなど、特定のユーザーに対する適切なセキュリティ特権が必要であり、ユーザーのレジストリ ハイブが現在マウントされている必要があります。 アクセス制御の問題の詳細については、「Access Control」を参照してください。
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構造体の hProcess メンバーと hThread メンバーは、それぞれプロセス ハンドルとスレッド ハンドルを保持します。 このメンバーを NULL に設定すると、関数が戻る前にプロセスが閉じられます。
注釈
pszParameters に二重引用符を含めるには、次の例のように、各マークを二重引用符で囲む必要があります。
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
この場合、アプリケーションは次の 3 つのパラメーターを受け取ります。 例: と "引用符で囲まれたテキスト" です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional、Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | shellapi.h |