11

コマンドラインを読み取って、既知のプロセスで使用されるファイルの絶対パスを特定したいと考えています。現在、プロセスは、構成ファイルなどのさまざまなファイルを指すコマンド ラインの相対パスで開始されます。問題は、パスが実行可能ファイルを含むフォルダーに対して相対的でない場合、コマンド ラインで指定された相対パスを変換する方法がないことです。

たとえば、次の 2 つのバッチ ファイルがあります。

バッチ 1 CD c:\test\bin test.exe ..\config\config.ini

バッチ 2 CD c:\test bin\test.exe config\config.ini

バッチ ファイル 1 の場合、取得するコマンド ラインは「c:\test\bin\test.exe ..\config\config.ini」であり、バッチ ファイル 2 の場合は「c:\test\bin\test.exe config」を取得します。 \config.ini". したがって、これを参照してください。パスを解決できません。

とにかく手始めに、ManagementObjectSearcher を使用して WMI クエリからコマンド ラインを取得しました。コマンドラインで渡されたパスを解決するために、プロセスが開始された作業ディレクトリを取得する必要がありますが、どうすればよいですか?

編集:重要な詳細を1つ忘れました。別のプロセスの作業ディレクトリを取得したい。基本的に、私のメイン プログラムは別のプログラムから情報を収集します。実行可能ファイルの名前がわかっているので、プロセス ID を特定できます。コマンドラインも特定できます。コマンドラインの相対パスを解決できるように、実行可能ファイルが開始された作業ディレクトリまたは現在のディレクトリを見つける必要があります。質問がより明確になったことを願っています。

4

3 に答える 3

6

実行可能ファイルが開始されたディレクトリを提供する必要があると思いますEnvironment.CurrentDirectory。後で変更できるため、プロセスの開始時にのみ信頼できます。

または多分試してみてくださいProcess.GetCurrentProcess().StartInfo.WorkingDirectory。自分で試したわけではなく、MSDNで調べただけです。

于 2010-07-30T21:25:33.490 に答える
2

C# で別のプロセスの作業ディレクトリ (現在のディレクトリ) を取得するには、https://stackoverflow.com/a/23842609/3029359をご覧ください。

于 2019-11-27T21:43:08.423 に答える
0

試しましたApplication.ExecutablePathか?

または、取得できる多数のパスがあります。Application

于 2010-07-30T21:45:28.053 に答える