両者の主な違いは何ですか?(C++) アプリケーションから別の EXE だけを実行したいと考えています。環境、セキュリティ機能などを継承する際に違いはありますか?
3 に答える
CreateProcessとの主な違いShellExecuteは次のとおりです。は、エクスプローラーでユーザーを表示する低レベルおよび高レベルのユーザー レバーをCreateProcessより重視しています。ShellExec
たとえば、 を使用CreateProcessすると、より長い長さのコマンドラインを使用できますMAX_PATH。32,768 文字の制限があります。CreateProcessログオン画面のような別の Windows デスクトップで (十分な権限がある場合) プログラムを起動するために使用することもできます。
もう一つの例。ShellExecuteたとえば、コントロール パネルを起動するか、コンピューターに存在する任意のプログラムを開いて JPG ファイルを編集するために使用できます。そのShellExecuteため、Windows エクスプローラーで対応するアクションに近い操作を行うことができます。
主な違いは柔軟性です。ShellExecute使いやすいですが、柔軟性はあまりありません。CreateProcess使用するのは面倒ですが、何でもできます。
たとえば、CreateProcessを使用すると、子の標準の入出力/エラーストリームに使用するハンドル(パイプまたはファイル)を指定できます。ShellExecuteそれをする方法をあなたに与えません。
ShellExecute 実行可能ファイルを直接起動するために使用できますが、その主な目的はドキュメントファイルを「実行」することです。たとえば、「 whatever.html 」を「実行」するように指示すると、デフォルトが起動します。 Webブラウザを開き、指定したHTMLファイルをそのブラウザにロードします。を使用してそれを行うこともできますがCreateProcess、それを行うには、(通常)呼び出しFindExecutableて問題のデータファイルに関連付けられているプログラムを見つけ、それを実行してデータファイルをパラメーターとして渡します。
CreateProcess開始されたプロセスのハンドルと ID を返します。これはPROCESS_INFORMATION構造内のメイン スレッドです