コマンドラインを読み取って、既知のプロセスで使用されるファイルの絶対パスを特定したいと考えています。現在、プロセスは、構成ファイルなどのさまざまなファイルを指すコマンド ラインの相対パスで開始されます。問題は、パスが実行可能ファイルを含むフォルダーに対して相対的でない場合、コマンド ラインで指定された相対パスを変換する方法がないことです。
たとえば、次の 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 を特定できます。コマンドラインも特定できます。コマンドラインの相対パスを解決できるように、実行可能ファイルが開始された作業ディレクトリまたは現在のディレクトリを見つける必要があります。質問がより明確になったことを願っています。