C # Получить рабочий каталог другого процесса - PullRequest
6 голосов
/ 31 июля 2010

Я хочу определить абсолютный путь к файлам, используемым известным процессом, прочитав командную строку.В настоящее время процесс запускается с относительными путями в командной строке, которые указывают на различные файлы, такие как файлы конфигурации.Проблема в том, что если пути не относятся к папке, содержащей исполняемый файл, у меня нет возможности преобразовать относительные пути, указанные в командной строке, ну, я не могу быть уверен на 100%.

Например, два пакетных файла:

Пакет 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" и дляпакетный файл два я получаю «c: \ test \ bin \ test.exe config \ config.ini».Итак, посмотрите, что я не могу разрешить пути.

Во всяком случае, для начала я получил командную строку из запроса WMI, используя ManagementObjectSearcher.Теперь мне нужно получить рабочий каталог, из которого был запущен процесс, чтобы разрешить пути, передаваемые в командной строке, но как?

РЕДАКТИРОВАТЬ: я забыл одну ключевую деталь.Я хочу получить рабочий каталог другого процесса.По сути, моя основная программа собирает информацию из другой программы.Я могу определить идентификатор процесса, потому что я знаю имя исполняемого файла.Я также могу определить командную строку.Теперь я должен найти рабочий каталог или текущий каталог, в котором был запущен исполняемый файл, чтобы я мог разрешить относительные пути командной строки.Надеюсь, я прояснил вопрос.

Ответы [ 2 ]

8 голосов
/ 31 июля 2010

Я думаю, Environment.CurrentDirectory должен дать вам каталог, в котором был запущен исполняемый файл. Он надежен только в начале процесса, поскольку может измениться позже.

Или, может быть, попробуйте Process.GetCurrentProcess().StartInfo.WorkingDirectory. Я сам не пробовал, просто посмотрел на MSDN

1 голос
/ 31 июля 2010

Вы пробовали Application.ExecutablePath?

Кроме того, существует множество путей, которые можно получить из Application

...