他のプログラムで実行されたときなど、プログラムに渡されたコマンドラインパラメータを調べるツールまたはメソッドを探しています(ランチャーアプリケーションのシナリオ)。
あなたは プロセスエクスプローラ を使ってそれをすることができます。
マウスを使ってプロセスの上にカーソルを置くと、起動に使用されたコマンドライン引数が表示されます。
別の方法として、プロセスのプロパティを開き、そこでコマンドラインを調べることもできます。
WindowsのWMIサービスを使用して、Process Explorerなしでそれを実行することもできます。コマンドプロンプトから次のコマンドを実行します。
WMIC path win32_process get Caption,Processid,Commandline
出力をファイルにダンプする(読みやすくする)場合は、/ OUTPUTスイッチを使用します。
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
タスクマネージャを使うことでそれを達成することもできます。
タスクマネージャを開く(CTRL-SHIFT-ESC、CTRL-ALT-DELETEまたはその他の方法による)。
Windows 7(そしておそらくWindows XP)の場合:
Windows 8の場合:
コマンドラインの列が現在表示されている列に追加されます。
PowerShellによる救助.
見つける:
Get-WmiObject Win32_Process -Filter "name = 'Perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\Perl\bin\Perl.exe" t/Server_PreFork.t'}
そしてボーナスとして殺します:
Get-WmiObject Win32_Process -Filter "name = 'Perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\Perl\bin\Perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }
PowerShellから直接実行することも、システム設定がある場合はps1から実行することもできます。私は で無制限のスクリプト設定を詳しく説明します。私はPowerShell と他のPowerShellのトリックでゾンビを殺します...
プロセスがすでに実行されていて、もうすぐ終了する予定がない場合は、以前の回答は素晴らしいものです。しかし、(私が行ったように)プロセスを複数回起動したり、すぐに終了したり、あるいは長期間にわたって発生をログに記録したりする必要がある場合は、 プロセスモニタ 。
基本的にはシステム内のさまざまなイベントをログに記録します。この場合は、以下に示すように、 "Process Start"イベントと監視したいプロセスの名前をフィルタリングするだけです。
それから、プロセスモニタを実行し続け、ログを記録したいプロセスを実行するために何でもします。 [詳細]列または[コマンドライン]列(構成方法によって異なります)にコマンドライン引数が表示されます。例えば:
もちろんこのようにして、作業ディレクトリやプロセスに渡された環境変数など、より関連性の高い情報を抽出することができます。結果をファイルにエクスポートするのも簡単です。
CygWin を使用している場合、 Python プロセスを起動すると、これはコマンドラインの例です。
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
しかし、 Process Explorer はメインexeのみを見ます。
("パス:[Error opening process message]"に注意してください(EDIT-1を参照)。 tasklist
と同じ結果です。
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
だから、今まで私が知っている唯一のトリックは、 CygWin Bash Shell pgrep
で見つけられることです。
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
CygWinがWindowsで問題なく動作する限り、これを知っておくと便利です。また、これを使用して、多くのPOSIXおよびPythonプログラムを実行することができます。
編集:Windowsでは、あなたはタスクリストの管理者権限を必要としていないようです。 CygWinでは、管理者のプロセスを見ることができるようにする必要があります(私にとってより論理的に思えるもの:完全なコマンドラインはパスワードのようないくつかのパラメータinside)そのため、 CygWin Bashを 昇格 で実行する必要があります。管理者モード。
編集1:あなたが管理者としてプロセスエクスプローラを実行するならば、この問題は起こりません。指摘してくれてありがとう、@Pacerier。