両者の主な違いは何ですか?(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
構造内のメイン スレッドです