プロセスを起動する CreateProcess 関数編

プロセスを新たに起動する場合は、CreateProcess 関数を使用します。
下記のコードは、起動されたプロセスが終了するまで待機するプログラムになります。

PROCESS_INFORMATION pInfo;
STARTUPINFOW sInfo = { sizeof(STARTUPINFO) };
TCHAR szCommandLine[1024];
GetWindowText(hEdit, szCommandLine, _countof(szCommandLine)); // szCommandLine に "notepad.exe" など起動したい exe 名を入れる
CreateProcessW(0, szCommandLine, 0, 0, 0, 0, 0, 0, &sInfo, &pInfo);
CloseHandle(pInfo.hThread);
WaitForSingleObject(pInfo.hProcess, INFINITE);
CloseHandle(pInfo.hProcess);
MessageBox(hWnd, TEXT("プロセス終了しました。"), TEXT("確認"), 0);

管理者ではないプロセスから CreateProcess で管理者権限が必要なプロセスを起動しようとすると失敗します。このとき、GetLastError 関数で ERROR_ELEVATION_REQUIRED が返されます。プロセス起動の際に UAC 昇格を行うには、ShellExecute 関数、または ShellExecuteEx 関数でプロセスを起動することをお勧めします。


スポンサーリンク
広告1
広告1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告1