問題タブ [processstartinfo]
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.
c# - Process.Start からテキスト ファイルにログを記録する
Process.Start(ProcessStartInfo) を使用してプロセスを開始しています。現在、コンソール ウィンドウが表示され、プロセスが完了するまでプロセスの出力がそこに表示されます。プロセスが完了すると、コンソール ウィンドウは自動的に閉じます。
プロセスは大量のテキストを出力するため、これまでに見つけた例のように、この出力を文字列にリダイレクトしたくありません。
コンソール出力のテキストをテキスト ログ ファイルに記録するにはどうすればよいですか?
process - System.Diagnostics.Processがクレデンシャルを受け入れていません
Processクラスを使用してバッチファイルを実行しようとしています。このコードは、LogonUser()とWindowsIdentity.Impersonate()を使用してローカルPC管理者アカウントを偽装しているコードの大きなセクションの真ん中にあります。
ProcessStartInfoにクレデンシャルを追加せずに、プロセス内でバッチファイルを実行しようとしましたが、その方法でバッチファイルがサイレントに失敗しました-エラーは発生せず、バッチファイルからの期待される出力は返されませんでした(私は読んでいますstderrとstdoutは非同期で、fwiw)。
次に、クレデンシャルをProcessStartInfoに追加しましたが、最初にWindowsImpersonationContext.Undo()を呼び出さないと「アクセスが拒否されました」エラーが発生し、.Undoを呼び出すと「ログオン失敗:不明なユーザー名またはパスワードが正しくありません」というエラーが発生します。 ()Process.Start()の前。複数のアカウントについて、ユーザー名/パスワード/ドメインが正しいことをトリプルチェックしました。
コードにLogonUser()またはWindowsIdentity.Impersonate()呼び出しがない場合(およびProcessStartInfoに資格情報がない場合)、バッチファイルの実行とバッチファイルからの出力のキャプチャに問題はありません。
ローカル管理者または任意のローカルユーザーアカウントとして、デスクトップからバッチファイルを正常に実行できます。その権限は、実行しようとしているアカウントから読み取り可能/実行可能である必要があることを示していることがわかります。これは本当にかなりのスタンパーです。どんな助けでも大歓迎です。
c# - コマンド ライン プログラムを C#/ASP.NET 内から実行すると終了しない
C# ASP.NET アプリケーション内から Win32 コマンド ライン プログラムを実行する方法について読んでいますが、何らかの理由で、以下のコードは実行中に完了せず、無期限にoutput = p.StandardOutput.ReadToEnd();
オンラインのままになります。
このコードは、ローカル デバッグ サーバーから (Visual Studio から F5 キーを押して) 実行するとうまく動作しますが、完全な URL (myexample.com/testapp) を介してブラウザーからアクセスすると、デバッガーはoutput=...
行を超えて移動しませんでした。
.exe は単純な http 要求アプリであり、ローカル ファイルなどにはアクセスせず、結果をコンソールに出力します。
これは最初はパーミッションの問題かもしれないと思っていたので、デバッグ目的でFetchIntranetPageSpecial.exe
パーミッションを「EVERYONE, EVERYTHING」に設定してください。
次に何を試すことができるかについての指針はありますか?
EDIT : このページProgram does not terminate when using processesも読みましたが、その場合、デバッガーは次の行で無期限の「待機」状態になります。
c# - How do I get 'RedirectStandardOutput' to work in NUnit?
I am working on an automation strategy for our QA group and need to be able to capture the output of scripts and EXE files. When I run this code as a console application, I am able to successfully capture the output of plink.exe:
This command takes about a minute to execute and I successfully capture the results to the output variable.
However, when I compile the same code as a DLL and run through NUnit, the code completes immediately and fails with the value of output == NULL:
I have narrowed the problem down to the line string output = process.StandardOutput.ReadToEnd()
. If I comment the line out, execution time is around a minute and the operation is successfully executed on the remote machine (test.sh gets executed on a remote Linux box).
I hope I'm missing something simple - I don't want to have to find a different test harness.
It looks similar to the (unsolved) question here: Why does a process started in a DLL file work when tested using console application, but not when called by another DLL file?
wpf - 直列および並列でプロセスを開始
ここに問題があります.....
ProcessStartInfoのリストを次のように持っていますList<ProcessStartInfo>
Series
ieでプロセスを開始したい
最初のプロセスを開始した場合、リストの2番目のプロセスは、最初のプロセス(終了または中止)のときにのみ開始する必要があります。
私はそれを次のように試します.....
マルチスレッド用のカスタムクラスを使用して実行startSeriesExecution
しているので、すべてのプロセスが同時に実行されます。
また、私が観察したもう1つのこと...
1つのプロセスがすでに実行されている場合...IEがすでに実行されており、実行されたstartSeriesExecution()
とします。この場合、すでに実行されているプロセス(IE)が開始されます...その後、forループ全体が実行されます...つまり、リスト内のすべてのプロセス実行されます...
どうすればいいのかわからなくなった…。
c# - C#でNew Process()を使用して、コマンドラインテキストをテキストファイルにコピーするにはどうすればよいですか?
引数-a、-c、および3400 @ takdを指定してlmutil.exeを実行し、コマンドラインプロンプトで生成されるすべてのものをテキストファイルに入れたいと思います。以下にあるものが機能していません。
プロセスをステップスルーすると、「System.InvalidOperationExceptionタイプの例外をスローしました」などのエラーが発生します。
私が欲しいのは、コマンドライン出力をReport.txtに書き込むことだけです
.net - コンソール アプリケーションを起動し、最後に閉じないようにする方法は?
.NET アプリケーションからシェル スクリプト (.cmd) を開始しています。スクリプトが完了した後もコンソール ウィンドウを開いたままにして、エラーをチェックできるようにしたいと思います。で試してcmd.exe /K:my.cmd
いますが、何らかの理由で機能しません (スクリプトが実行されません)。単純な「dir」コマンドでさえ機能しません。他のアイデアはありますか?
実証するために、これは:
私にこれを与えます:
明確化の追加:私のアプリケーション (スクリプトを開始するアプリケーション) は、Windows フォームアプリケーションです。上記のコードを実行すると、新しいコンソール ウィンドウが開きます (当然のことです)。その新しいコンソール ウィンドウを開いたままにしておきます。また、スクリプトを変更することはできません。これは自動化されたビルド スクリプトであり、終了する必要があります。
c# - 複数の引数を持つ Shutdown.exe のプロセスが機能しない
shutdown.exe を使用して一定時間後にコンピューターをシャットダウンするプロセスを作成したいと考えています。
これが私のコードです:
secondsが int ローカル変数である場合、ユーザーが決定します。
コードを実行しても何も起こりません。しかし、手動で cmd プロンプトに移動して次のように入力すると、
shutdown.exe - s -f -t 999と入力
すると、Windows によってポップアップが表示され、システムが 16 分以内にシャットダウンすることが通知されます。
複数の引数が原因だと思う理由は、進行中のシステムシャットダウンを中止する方法が機能するためです(cmdプロンプトからsystemshutdownを手動で作成した場合)。startInfo.Argumentを除いて、これはほとんど同じです。
c# - C#でProcessStartInfoで「<」(入力リダイレクト)を使用するには?
私は次のものを持っています:
私はこれを試します:
Start() が呼び出された後、dowork.exe がクラッシュします。
助言がありますか?
質問の更新を投稿します。
ご意見をお寄せいただきありがとうございます。amit_gの回答を使用して問題を解決しました。おそらく最良の方法を示してくれた Phil に感謝します (私はテストしていませんが、それが優れている理由はわかります)。以下は私の完全な解決策です。あなた自身の問題のために自由にコピーして変更してください。
1) コンソール アプリケーション プロジェクトを作成し、このクラスを追加します。
2) 1 つのファイルを作成します: C:\temp\input.txt
3) input.txt を編集し、1 文字 'w' を入力して保存します (つまり、ファイルには 1 文字が含まれています)。
4) 新しいクラス ライブラリ プロジェクトを作成します。nunit への参照を追加します (バージョン 2.2 を使用しています)。
5) testfixture クラスを作成します。次のようになります。注: このテスト フィクスチャは外部リソースを処理するため、フィクスチャ全体を実行することはできません。代わりに、各テストを 1 つずつ実行します。すべてのファイル ストリームが閉じていることを確認することでこれを修正できますが、これを書く気にはなりませんでした。自由に自分で拡張してください。
}
c# - %temp% を使用した Process.Start ファイル名
いくつかの奇妙な理由で、このコードは失敗します:
そして、このコードは成功します:
私が行方不明になっている理由はありますか?
パスをコピーしただけであることに注意してください。残りのコードは必要ないと思いますが、とにかく入れます。