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

SHCreateProcessAsUserWrunas 動詞で指定されたアクションを実行する実行可能ファイルを指定する、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

こちらもご覧ください

SHELLEXECUTEINFO