問題タブ [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.
winapi - 管理者として実行する CreateProcess
私の Win32 アプリケーションでは、作成および管理する匿名パイプへのリダイレクトされた入力と出力を使用して子プロセスを実行する機能があります。これはすべて CreateProcess() 関数で機能します。ただし、Win7 (およびおそらく Vista) では、そのプロセスを管理者として実行する必要がある場合、これは失敗します。したがって、私が探しているのは、エクスプローラーで「管理者として実行」コマンドに相当するものを実行する方法です。これにより、標準の UAC プロンプトが表示され、昇格されたアクセス許可でプロセスが作成されます。これを行うために「runas」オプションを ShellExecute に使用することについて話している記事を見たことがありますが、それを見ると、std の入力と出力をパイプにリダイレクトする必要があるコントロールがありません。助言がありますか?
android - android adb start-server の CreateProcess?
CreateProcess を使用してプロセス adb.exe を作成すると、ReadFile でブロックされます。
コードを次のように変更すると
動作しますが、printf コードを削除すると、再びブロックされます。
adb.exe のコードに、以下のようなコードが表示されます。
adb.exe の子プロセスは adb.exe のハンドルを継承していると思います。adb.exe の子プロセスが終了しないと、ReadFile は永久にブロックされます。しかし、コマンドで「adb.exe start-server」を実行すると、すべて問題ありません。では、Windows コマンドはどのように CreateProcess と ReadFile を呼び出すのでしょうか?
windows-7 - CreateProcess を ShellExecuteEx に変換するには?
MS detour ライブラリを使用して CreateProcess をフックすると、Win7 で正常に動作します。次に、迂回したCreateProcessをShellExecuteExに置き換えて、「runas」を使用して管理者権限でプログラムをサイレントに実行できるようにします。残念ながら、パラメーターの型は同じではありません。
これは関数のシグネチャです:
ここでは、ShellExecuteEx を呼び出します。
ただし、この割り当てにはエラーがあります: ShExecInfo.lpFile = lpszImageName;
VC2005 は、データ型が同じではないと訴えています: "cannot convert from const unsigned char * to const char *"
。
LPCWSTR
ただし、 CreateProcess のパラメーター lpszImageNameのデータ型はであり、ShExecInfo.lpFile はLPCTSTR
です。
(const unsigned char*) を使用して lpszImageName を変換すると、lpFile の値は lpszImageName 値の最初の文字のみになります。
たとえば、lpszImageName が「C:\windows\system32\cmd.exe」の場合。割り当て後、lpFile 値は「C」のみです。
LPCWSTR から LPCTSTR に変換するにはどうすればよいですか? または、どうすれば変換できますか?
ありがとう!!!
c++ - CreateProcess によって作成されたプロセスを別のウィンドウ内で開く方法はありますか?
メイン プロセスで CreateProcess を使用して GUI アプリケーションを開き、メイン プロセス内から作成したウィンドウに GUI を表示できるようにしたいと考えています。これを達成する方法を知っている人はいますか?ありがとう!
file - Gcc.exe: CreateProcess: そのようなファイルまたはディレクトリはありません - エラーですか?
Objective C プログラムを作成していて、'hello.m' として保存しました。問題は、MinGWを使用してコンパイルしようとするとエラーが発生することです
gcc hello.m // コンパイルに使用しましたが、次のエラーが発生しています
gcc.exe: CreateProcess: そのようなファイルまたはディレクトリはありません
私が前進できるように..修正する方法はありますか..
ありがとうございました
c - argv[] を CreateProcess() に渡す方法
私の C Win32 アプリケーションでは、別のプログラムを起動するための完全なコマンド ラインを渡すことができるはずです。
myapp.exe
のように見えるかもしれません
いくつかの回避策を考えることができます:
GetCommandLine()
argv[i] に対応する部分文字列を使用して検索します- 別のSOの質問
ArgvToCommandLine()
でも言及されているものに似たものを書いてください
どちらも長くて、面倒な Windows コマンド ライン解析ロジックを再実装します。これは、既に の一部ですCommandLineToArgvW()
。
私の問題に対する「標準的な」解決策はありますか? 回避策の標準 (Win32、CRT など) の実装は、ソリューションとしてカウントされます。
winapi - Powershell:CreateProcess()を介して呼び出されたときに使用できない一部のモジュール
一部のPowerShellモジュールはどのような条件下で使用できなくなりますか?
CreateProcess()
とコマンドラインを使用してプロセスを作成する場合
powershell -Command "Get-Module -ListAvailable"
コマンドプロンプトから同じステートメントを実行したときに取得するすべてのモジュールを取得できません。
STARTUPINFOまたはPROCESS_INFORMATION構造体内に設定する必要のあるフィールドはありますか?
c++ - 問題発生アプリケーション
おやおや、これは奇妙すぎて、何を言えばいいのかわからない。短いバージョンは、ユーザーが要求したときにアプリケーションから生成するシミュレーター アプリを持っていることです。コマンドラインまたはスタートメニューからシミュレーターを正常に実行できますが、最近動作を停止しました。これは、VS2010 または Windows 7 に移行したことが原因である可能性があります。または、ソース管理の差分を確認していて気付かなかったことが原因である可能性があります。
同じ方法で生成しようとする 2 つ目のシミュレーターがあり、正常に動作します。
デフォルトでは、この目的のために CreateProcess の周りに Qt3 の QProcess ラッパーを使用していますが、システム、独自の CreateProcess、および ShellExecute を使用しても同じ動作が得られます。
ただし、cmd.exe "/c application params" の ShellExecute は、さらに詳しい情報を提供してくれます。ダイアログが表示されます
「コンピューターに MSVCR80.dll が見つからないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。」
親アプリケーションと 2 番目のシミュレータの両方が MSVCR80.dll を使用しているため、不便です。
MSVC*80.dll を g:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 から実行可能ファイルと同じディレクトリにコピーすると、エラー メッセージが次のように変わります。
「ランタイム エラー!
プログラム: g:\path\to\app.exe
R6034
アプリケーションが C ランタイム ライブラリを正しくロードしようとしました。
詳細については、アプリケーションのサポート チームにお問い合わせください。
に続く
アプリケーションを正しく起動できませんでした (0xc0000142)。[OK] をクリックして、アプリケーションを閉じます。
また、これらの dll を配置して、コマンド ラインからアプリケーションを正常に実行できます。
アップデート:
おそらく環境に関連していると思われたので、ShellExecute メカニズムを変更して cmd /c set && app params を実行しました。同じパラメーターで cmd.exe をセットアップすると、アプリが同様にクラッシュするようになりました。理由がわかったら更新します:)
プロセスの PATH 変数を変更して悪影響を及ぼしているのは、MATLAB のコンポーネント ランタイム ツールです。dllでいっぱいの独自のディレクトリを前に追加し、大混乱を引き起こしています。
windows - プロセスアクセス権限に関する質問
私は次のシナリオを得ました:
プロセス A がプロセス B を作成し、次に B が OpenProcess() で A のハンドルを取得しようとします。B に A に対する PROCESS_ALL_ACCESS 権限を持たせたい。
どうすればこれを達成できますか?
ありがとう。
c++ - 生成されたプロセスの準備ができたことを確認するにはどうすればよいですか?(CreateProcess()およびFindWindow()を使用)
CreateProcess()
これは簡単なことです。win32関数を使用してプロセスを生成するプログラムを作成しています。このプロセスがロードされると、を使用してウィンドウを見つけ、を使用FindWindow
してメッセージを送信しますSendMessage()
。問題は、そのウィンドウがいつメッセージを受け入れる準備ができているかをどうやって知ることができるかということです。
次のことを考慮してください。
上記のコードは(ほとんど?)常に失敗します。ウィンドウを作成してすぐに見つけることはできません。たとえば、と呼び出しSleep(1000)
の間にスレッドを待機させると、正常に機能します。しかし、これは非常に悪いハックのように感じます。CreateProcess
FindWindow
どうすればこれを改善できますか?