Как узнать командную строку процесса в Windows?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
DropSoft
новенький
Сообщения: 33
Зарегистрирован: 31.03.2013 13:47:40

Как узнать командную строку процесса в Windows?

Сообщение DropSoft »

Как найти командную строку нужного процесса в Windows?
Мне нужно для определенных запущенных процессов найти файлы, с которыми процесс запущен.
Сами процессы ищутся так:

Код: Выделить всё

uses ...Windows, jwatlhelp32...

procedure GetProcessParam;
var
  Snapshot: THandle;
  pe: TProcessEntry32;
begin
  Snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  try
    pe.dwSize := SizeOf(pe);
    if Process32First(Snapshot, pe) then
      while Process32Next(Snapshot, pe) do
        if pe.szExeFile = 'MyProg.exe' then
          // здесь надо получить строку типа : "C:\Program Files\MyProg\MyProg.exe" "D:\Work\Spisok1.txt"	
  finally
    CloseHandle(Snapshot);
  end;
end;
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Ну а дальше у вас будет ProcessId. Открываете по нему процесс через OpenProcess и получаете PROCESS_BASIC_INFORMATION через NtQueryInformationProcess
В PEB ищите указатель на PRTL_USER_PROCESS_PARAMETERS и уже из нее вычитываете CommandLine через ReadProcessMemory.
DropSoft
новенький
Сообщения: 33
Зарегистрирован: 31.03.2013 13:47:40

Сообщение DropSoft »

Сорри, в каком модуле NtQueryInformationProcess? Windows и jwatlhelp32 недостаточно.
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

https://learn.microsoft.com/en-us/windo ... ionprocess

Вообще она в ntdll. Если не хватает модулей с импортированными функциями, тогда можете просто добавить строку с её импортом у себя в программе.
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

DropSoft писал(а):Сорри, в каком модуле NtQueryInformationProcess? Windows и jwatlhelp32 недостаточно.
fpc/3.0.4/source/packages/winunits-jedi/src
я тут нашел пару файлов с импортом NtQueryInformationProcess

Добавлено спустя 3 минуты 6 секунд:
а кстати там и jwatlhelp32
JwaNative
JwaWinternl
Ответить