問題タブ [createprocess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
7465 参照

c++ - デバッガーで実行すると、AssignProcessToJobObject が「アクセスが拒否されました」というエラーで失敗する

実行するAssignProcessToJobObjectと、「アクセスが拒否されました」で失敗しますが、デバッガーで実行している場合のみです。どうしてこれなの?

0 投票する
2 に答える
5250 参照

winapi - パス > MAX_PATH 文字でプロセスを実行する CreateProcess/CreateProcessW を取得する方法

CreateProcess または CreateProcessW のいずれかを取得して、名前が MAX_PATH 文字未満のプロセスを実行しようとしていますが、パスは MAX_PATH 文字を超えています。ドキュメントによると:http://msdn.microsoft.com/en-us/library/ms682425.aspx、lpApplicationName が NULL でないことを確認する必要があり、lpCommandLine は最大 32,768 文字です。

試してみましたが、ERROR_PATH_NOT_FOUND が発生します。

CreateProcessW に変更しましたが、それでも同じエラーが発生します。で説明されているように、lpApplicationName の前に \\?\ を付けると、http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx CreateProcessW を呼び出すと、別のエラーが表示され、もう少し近づいたと思われます: ERROR_SXS_CANT_GEN_ACTCTX。

CreateProcessW への私の呼び出しは次のとおりです。

CreateProcessW(w_argv0,arg_string,NULL,NULL,0,NULL,NULL,&si,&ipi);

w_argv0 はどこにありますか\\?\<long absolute path>\foo.exe.

arg_string には、"<長い絶対パス>\foo.exe" foo が含まれています

si は次のように設定されます。

次のように、pi は空です。

システム イベント ログを調べたところ、イベント ID 59、ソース SideBySide: Generate Activation Context failed for .Manifest でこれを試行するたびに新しいエントリがあります。参照エラー メッセージ: 操作は正常に完了しました。

実行しようとしているファイルは、パス < MAX_PATH 文字で正常に実行されます。

明確にするために、<長い絶対パス> の 1 つのコンポーネントが MAX_PATH 文字を超えることはありません。最後に .manifest があっても、実行可能ファイル自体の名前は確かにそうではありません。ただし、パス全体を合わせると、長さが MAX_PATH 文字を超えています。

マニフェストを埋め込むかどうかに関係なく、同じエラーが発生します。マニフェストは foo.exe.manifest という名前で、埋め込まれていない場合は実行可能ファイルと同じディレクトリに存在します。を含む:

これを機能させる方法を知っている人はいますか?おそらく:

  • CreateProcess または CreateProcessW を呼び出してパス > MAX_PATH 文字でプロセスを実行する別の方法

  • マニフェスト ファイルでできること

XP SP2 で Visual Studio 2005 を使用してビルドし、ネイティブで実行しています。

ご協力いただきありがとうございます。

0 投票する
3 に答える
8846 参照

delphi - Delphi - サービスで作成されたプロセスを適切に閉じる. (tprocess / createProcess を使用)

多くのプログラムを実行する Delphi で記述された Windows サービスがあります。

サービスを停止する際に、これらのプログラムも閉じたいと思います。サービスが最初に作成されたとき、これはうまくいきましたが、tProcess コンポーネントを更新したと思います。現在、下位プログラムは閉じられていません。

in tProcess - 新しいプロセスを開始するコードは次のとおりです。

これによって呼び出される各実行可能ファイルは、Windows GUI プログラムです (上部に [閉じる] ボタンがあります)。

サービスを停止するときは、createProcess プロシージャを介して起動したプログラムも停止 (強制終了ではなく) したいと考えています。

これをどのように行いますか?

0 投票する
3 に答える
915 参照

c++ - サービスからのプロセスの起動

サービスから別のプロセスを起動しようとしています(データを収集してレジストリに書き込むコンソールアプリです)が、何らかの理由で正しく起動できません。

私がやろうとしていることの基本は次のとおりです。

  1. プロセスを起動します
  2. プロセスが終了するのを待ちます
  3. プロセスからリターンコードを取得します

私は現在、次のコードを使用しています。

CreateProcess()を呼び出すと、成功し、ifステートメントの本体に入ります。WaitForSingleObjectの呼び出しはすぐに返されますが、プロセスが完了するまでに約20〜30秒かかるため、返されません。そして最後に、GetExitCodeProcess()の呼び出しは失敗し、値「exit」を設定しません。

参考までに、これは私が実際に他の場所で成功して使用したコードであり、サービスではありません。

サービスから起動されており、権限の問題がある可能性がありますか?

編集: 実際にアプリを起動することに気づきましたが(TaskManで確認できます)、スタックしているようです。そこにありますが、何もしていません。
Rob Kennedyの提案に基づいて、プロセスハンドルの問題を修正しましたが、実際にはプロセスが終了するのを待ちます。しかし、手動で殺さない限り、それは決して終わりません。

0 投票する
3 に答える
3030 参照

windows-server-2003 - Windows Server 2003 64ビットでCreateProcessが失敗するのはなぜですか?

プロセス中に他の32ビットアプリケーションを起動する32ビットアプリケーションがあります。アプリケーションは他の64ビットプラットフォームでは正常に動作していますが、Windows Server 2003 64ビットでは、アプリを起動しようとするとエラーが発生します。

そのシステムでこれらのアプリケーションを問題なく手動で起動できます。

この記事で問題が見つかったと思いましたが、お客様のシステムにはすでにこのパッチが適用されており、エラーは引き続き発生しています。

他の誰かが同様の何かに遭遇した場合、または誰かがこれを解決する方法について何か考えを持っている場合、それは大いにありがたいです!

ありがとう!フランソワ・コテ

0 投票する
4 に答える
7174 参照

windows - CreateProcessに呼び出しプロセスのコンソールを継承させる

WindowsでCreateProcessを呼び出すと、新しいプロセスが呼び出し元のプロセスのコンソールを継承していないようです。「rubyxtest」を実行するテストプログラムを作成しました。xtestは「hello」を標準出力に書き込むスクリプトです。このテストプログラムをEmacsから実行しましたが、出力がありません。GetStdHandleを呼び出す次のコードも試しましたが、出力がありません。次に、dwCreationFlagsのCREATE_NEW_CONSOLEをCreateProcessに渡してみました。これにより、Ruby出力でまったく新しいウィンドウが作成されました。最後に、単純なfork / execテストプログラムを作成し、CygwinのGCCを使用してコンパイルしました。このプログラムは機能しました:Rubyの出力は期待通りにEmacsに現れました。http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/spawn.cc?rev=1.268&content-type=text/x-cvsweb-markup&でCygwinソースコードを解読しようとしましたしかし失敗しました。では、子からの出力が期待どおりに表示されるように、新しいプロセスに親プロセスのコンソールを継承させるにはどうすればよいでしょうか。

0 投票する
4 に答える
4244 参照

string - Delphi CreateProcess コマンドから返された文字列にアクセスできますか?

Win32CreateProcess関数を使用して、外部実行可能ファイルへの呼び出しを実行しています。実行可能ファイルは文字列を返します。

実行可能ファイルを呼び出した後、返された文字列をキャプチャして問い合わせる方法はありますか? それができない場合は、実行可能ファイルのファイルに文字列を書き出し、呼び出しが終了した後に呼び出し側プログラムでそれを読み取る必要があるかもしれません。それは不自由に思えますが。

0 投票する
1 に答える
1711 参照

delphi - CreateProcess と WaitForSingleObject が 2 つの PDF ファイルの 2 番目で失敗する

全て

私は Delphi 2007 で CreateProcess と WaitForSingleObject を使用してファイルを開き、ファイルが閉じられるのを待ちます。2 つの PDF ファイルを続けて開くと、2 番目の WaitForSingleObject がすぐに返されることがわかりました。また、これはjpgおよびtifファイルでは発生しますが、txtファイルでは発生しないことがわかりました。また、2 番目の PDF を開くのに、単独で開いた場合よりも 10 秒長くかかります。また、Vista と XP の両方、およびさまざまなコンピューターで発生します。CreateProcess を間違って使用していますか、それとも別のものですか?

どんな助けでも大歓迎です。

よろしく

ボブ

0 投票する
3 に答える
4994 参照

c++ - C++ 経由で explorer.exe を起動するにはどうすればよいですか?

プログラムで explorer.exe を起動しようとしていますが、うまくいきません。

これは私のコードです:

pName は explorer.exe です

誰かが私が間違っていることを教えてもらえますか? エラーコード「2」が表示されますERROR_FILE_NOT_FOUND