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

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

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

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

Сообщение DropSoft » 03.06.2025 11:30:20

Как найти командную строку нужного процесса в 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;
DropSoft
новенький
 
Сообщения: 33
Зарегистрирован: 31.03.2013 13:47:40

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

Сообщение xchgeaxeax » 03.06.2025 11:55:53

Ну а дальше у вас будет ProcessId. Открываете по нему процесс через OpenProcess и получаете PROCESS_BASIC_INFORMATION через NtQueryInformationProcess
В PEB ищите указатель на PRTL_USER_PROCESS_PARAMETERS и уже из нее вычитываете CommandLine через ReadProcessMemory.
xchgeaxeax
постоялец
 
Сообщения: 190
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение DropSoft » 03.06.2025 15:52:21

Сорри, в каком модуле NtQueryInformationProcess? Windows и jwatlhelp32 недостаточно.
DropSoft
новенький
 
Сообщения: 33
Зарегистрирован: 31.03.2013 13:47:40

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

Сообщение xchgeaxeax » 03.06.2025 15:57:14

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

Вообще она в ntdll. Если не хватает модулей с импортированными функциями, тогда можете просто добавить строку с её импортом у себя в программе.
xchgeaxeax
постоялец
 
Сообщения: 190
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение sts » 04.06.2025 17:42:24

DropSoft писал(а):Сорри, в каком модуле NtQueryInformationProcess? Windows и jwatlhelp32 недостаточно.

fpc/3.0.4/source/packages/winunits-jedi/src
я тут нашел пару файлов с импортом NtQueryInformationProcess

Добавлено спустя 3 минуты 6 секунд:
а кстати там и jwatlhelp32
JwaNative
JwaWinternl
sts
постоялец
 
Сообщения: 452
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 243

Рейтинг@Mail.ru