CreateProcessW

新しいプロセスとそのプライマリスレッドを作成する。新しいプロセスは呼び出し元プロセスのセキュリティコンテキストで実行される。(Unicode)

CreateProcessW lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation

lpApplicationName : [wstr] 実行するモジュール名。Windows アプリケーションまたは他種(MS-DOS や OS/2 など)のモジュールを指定できる。フルパスまたは部分名を指定可能。部分名の場合は現在のドライブとディレクトリが使用される。NULL の場合、モジュール名は lpCommandLine の最初の空白区切りトークンとなる。スペースを含む長ファイル名では引用符を使う。
lpCommandLine : [wstr] 実行するコマンドライン。最大長は終端 NULL を含めて 32,767 文字。lpApplicationName が NULL の場合、モジュール名部分は MAX_PATH 文字に制限される。CreateProcessW はこの文字列を変更する可能性があるため、定数文字列や読み取り専用メモリへのポインタを渡してはならない。
lpProcessAttributes : [var] 新しいプロセスオブジェクトへのハンドルが子プロセスに継承可能かを決定する SECURITY_ATTRIBUTES 構造体へのポインタ。NULL の場合、ハンドルは継承されず、プロセスには既定のセキュリティ記述子が割り当てられる。
lpThreadAttributes : [var] 新しいスレッドオブジェクトへのハンドルが子プロセスに継承可能かを決定する SECURITY_ATTRIBUTES 構造体へのポインタ。NULL の場合、ハンドルは継承されず、スレッドには既定のセキュリティ記述子が割り当てられる。
bInheritHandles : [int] TRUE の場合、呼び出し元プロセスの継承可能ハンドルは新しいプロセスに継承される。FALSE の場合は継承されない。継承されたハンドルは元のハンドルと同じ値とアクセス権を持つ。Terminal Services では異なるセッション間でのハンドル継承はできない。
dwCreationFlags : [int] 優先クラスとプロセス作成を制御するフラグ。Process Creation Flags の一覧参照。
lpEnvironment : [intptr] 新しいプロセスの環境ブロックへのポインタ。NULL の場合は呼び出し元の環境が使用される。環境ブロックは NULL 終端文字列の NULL 終端ブロックで、各文字列は name=value\0 の形式。Unicode 文字を含む場合は dwCreationFlags に CREATE_UNICODE_ENVIRONMENT を含める必要がある。ANSI 環境ブロックは 2 バイトのゼロで、Unicode 環境ブロックは 4 バイトのゼロで終端される。
lpCurrentDirectory : [wstr] 新しいプロセスの現在のディレクトリへのフルパス。UNC パスも指定可能。NULL の場合、新しいプロセスは呼び出し元と同じドライブとディレクトリを持つ。
lpStartupInfo : [var] STARTUPINFO または STARTUPINFOEX 構造体へのポインタ。拡張属性を設定するには STARTUPINFOEX 構造体を使用し、dwCreationFlags に EXTENDED_STARTUPINFO_PRESENT を指定する。STARTUPINFO 内のハンドルは不要になったら CloseHandle で閉じる。呼び出し元は標準ハンドルフィールドに有効なハンドル値を設定する責任がある。
lpProcessInformation : [var] 新しいプロセスの識別情報を受け取る PROCESS_INFORMATION 構造体へのポインタ。

(プラグイン / モジュール : kernel32.dll)

解説

新しいプロセスとそのプライマリスレッドを作成する。新しいプロセスは呼び出し元プロセスのセキュリティコンテキストで実行される。(Unicode)

[戻り値]
関数が成功した場合、戻り値は 0 以外。失敗した場合は 0。拡張エラー情報は GetLastError
で取得する。この関数はプロセスが初期化を完了する前に戻る点に注意。必要な DLL
が見つからないか初期化に失敗した場合、プロセスは終了する。終了状態は GetExitCodeProcess で取得する。

[備考]
プロセスにはプロセス識別子が割り当てられ、終了まで有効。PROCESS_INFORMATION
構造体でハンドルと識別子が返される。呼び出し元スレッドは WaitForInputIdle
で新しいプロセスの初期化完了を待機できる。プロセスを終了する推奨方法は ExitProcess で、アタッチされた DLL
に通知が送られる。セキュリティ上の注意として、lpApplicationName が NULL で lpCommandLine
のパスにスペースが含まれる場合、意図しない実行ファイルが起動される可能性がある。
(以下省略)

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs