CAccessToken::CreateProcessAsUser
CAccessToken オブジェクトが表しているユーザーのセキュリティ コンテキストで実行する新しいプロセスを作成します。
bool CreateProcessAsUser(
LPCTSTR pApplicationName,
LPTSTR pCommandLine,
LPPROCESS_INFORMATION pProcessInformation,
LPSTARTUPINFO pStartupInfo,
DWORD dwCreationFlags = NORMAL_PRIORITY_CLASS,
bool bLoadProfile = false,
const CSecurityAttributes* pProcessAttributes = NULL,
const CSecurityAttributes* pThreadAttributes = NULL,
bool bInherit = false,
LPCTSTR pCurrentDirectory = NULL
) throw( );
パラメーター
pApplicationName
実行するモジュールを指定する NULL で終わる文字列へのポインター。 このパラメーターには NULL を指定できません。pCommandLine
実行するコマンド ラインを指定する NULL で終わる文字列へのポインター。pProcessInformation
新しいプロセスに関する識別情報を受け取る PROCESS_INFORMATION 構造体へのポインター。pStartupInfo
新しいプロセスのメイン ウィンドウの表示方法を指定する STARTUPINFO 構造体へのポインター。dwCreationFlags
優先順位クラスとプロセスの作成を制御する追加のフラグを指定します。 フラグの一覧については、Win32 関数の CreateProcessAsUser に関するトピックを参照してください。bLoadProfile
true の場合は、LoadUserProfile を使用してユーザーのプロファイルが読み込まれます。pProcessAttributes
新しいプロセスのセキュリティ記述子を指定し、返されたハンドルを子プロセスが継承するかどうかを決定する SECURITY_ATTRIBUTES 構造体へのポインター。 pProcessAttributes が NULL に設定されている場合、プロセスは既定のセキュリティ記述子を取得し、ハンドルを継承できません。pThreadAttributes
新しいスレッドのセキュリティ記述子を指定し、返されたハンドルを子プロセスが継承するかどうかを決定する SECURITY_ATTRIBUTES 構造体へのポインター。 pThreadAttributes が NULL に設定されている場合、スレッドは既定のセキュリティ記述子を取得し、ハンドルを継承できません。bInherit
新しいプロセスが呼び出しプロセスからハンドルを継承するかどうかを指定します。 true の場合は、呼び出しプロセスで開かれている継承可能な各ハンドルが、新しいプロセスに継承されます。 継承されたハンドルは、元のハンドルと同じ値とアクセス特権を持ちます。pCurrentDirectory
新しいプロセス用に現在のドライブとディレクトリを指定する null で終わる文字列へのポインター。 この文字列には、ドライブ名を含む完全パスを指定する必要があります。 このパラメーターが NULL の場合、呼び出しプロセスと同じ現在のドライブとディレクトリが新しいプロセスで使用されます。
戻り値
正常に終了した場合は true を返します。それ以外の場合は false を返します。
解説
CreateProcessAsUser は、CreateProcessAsUser Win32 関数を使用して、CAccessToken オブジェクトで表現されるユーザーのセキュリティ コンテキストで実行する新しいプロセスを作成します。 必要なパラメーターの詳細については、CreateProcessAsUser 関数の説明を参照してください。
このメソッドを正常に実行するには、CAccessToken オブジェクトが AssignPrimaryToken 特権 (オブジェクトが制限付きトークンである場合を除く) と IncreaseQuota 特権を保持している必要があります。
必要条件
**ヘッダー:**atlsecurity.h