Поиск параметров командной строки, с которыми был запущен процесс - PullRequest
1 голос
/ 05 декабря 2009

Я пытаюсь выяснить, как это сделать, я в настоящее время использую CreateToolHelp32SnapShot, чтобы получить список запущенных процессов, и у меня есть FilePaths исполняемых файлов, которые в данный момент выполняются, но мне нужно иметь возможность чтобы выяснить, какие параметры командной строки использовались для запуска процесса.

Я знаю, что это возможно, поскольку вы можете увидеть его в Process Explorer, я пытался найти исходный код старого Process Explorer, но безуспешно: (

Ответы [ 4 ]

5 голосов
/ 05 декабря 2009

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

Раймонд Чен недавно сделал хорошую статью на эту тему, в которой подробно описал, почему это ненадежно.

3 голосов
/ 05 декабря 2009

проверьте, будут ли NtQueryInformationProcess и ReadProcessMemory win API вызывать то, что вам нужно. Простого примера для этого нет, поэтому проверьте исходный код здесь: Получить информацию о процессе с помощью NtQueryInformationProcess

еще один способ получить эти данные - через WMI, что-то вроде этого:

SELECT CommandLine FROM Win32_Process WHERE ProcessId = ???

подробнее здесь: Класс Win32_Process

0 голосов
/ 06 декабря 2009

IIRC параметры командной строки хранятся в среде процесса - если вы можете получить к ней доступ, вы можете прочитать их тоже.

0 голосов
/ 05 декабря 2009

Одной из возможностей, которая возникает почти сразу, будет внедрение потока в целевой процесс (CreateRemoteThread) и вызов этого вызова GetCommandLine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...