11

両者の主な違いは何ですか?(C++) アプリケーションから別の EXE だけを実行したいと考えています。環境、セキュリティ機能などを継承する際に違いはありますか?

4

3 に答える 3

15

CreateProcessとの主な違いShellExecuteは次のとおりです。は、エクスプローラーでユーザーを表示する低レベルおよび高レベルのユーザー レバーをCreateProcessより重視しています。ShellExec

たとえば、 を使用CreateProcessすると、より長い長さのコマンドラインを使用できますMAX_PATH。32,768 文字の制限があります。CreateProcessログオン画面のような別の Windows デスクトップで (十分な権限がある場合) プログラムを起動するために使用することもできます。

もう一つの例。ShellExecuteたとえば、コントロール パネルを起動するか、コンピューターに存在する任意のプログラムを開いて JPG ファイルを編集するために使用できます。そのShellExecuteため、Windows エクスプローラーで対応するアクションに近い操作を行うことができます。

于 2012-05-25T09:08:06.160 に答える
12

主な違いは柔軟性です。ShellExecute使いやすいですが、柔軟性はあまりありません。CreateProcess使用するのは面倒ですが、何でもできます。

たとえば、CreateProcessを使用すると、子の標準の入出力/エラーストリームに使用するハンドル(パイプまたはファイル)を指定できます。ShellExecuteそれをする方法をあなたに与えません。

ShellExecute 実行可能ファイルを直接起動するために使用できますが、その主な目的はドキュメントファイルを「実行」することです。たとえば、「 whatever.html 」を「実行」するように指示すると、デフォルトが起動します。 Webブラウザを開き、指定したHTMLファイルをそのブラウザにロードします。を使用してそれを行うこともできますがCreateProcess、それを行うには、(通常)呼び出しFindExecutableて問題のデータファイルに関連付けられているプログラムを見つけ、それを実行してデータファイルをパラメーターとして渡します。

于 2012-05-25T01:52:26.627 に答える
3

CreateProcess開始されたプロセスのハンドルと ID を返します。これはPROCESS_INFORMATION構造内のメイン スレッドです

于 2012-05-25T10:42:20.240 に答える