Как получить список запущенных процессов удаленно? - PullRequest
1 голос
/ 30 октября 2011

Как получить список запущенных процессов на другом компьютере (через сеть) с использованием Delphi?

Ответы [ 2 ]

11 голосов
/ 30 октября 2011

Вы можете использовать класс Win32_Process WMI .

Проверьте этот пример

{$APPTYPE CONSOLE}
uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;


procedure  GetWin32_ProcessInfo;
const
  WbemUser            ='';//set the user name to log in
  WbemPassword        ='';//set the password
  WbemComputer        ='localhost';//set the name of the remote machine or IP address
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_Process','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln(Format('Name         %s',[String(FWbemObject.Name)]));// String
    Writeln(Format('ProcessId    %d',[Integer(FWbemObject.ProcessId)]));// Uint32
    Writeln;
    FWbemObject:=Unassigned;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      GetWin32_ProcessInfo;
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;
end.

Чтобы работать с WMI на удаленном компьютере, вы должны установить настройки брандмауэра и DCOM, проверьте эти статьи для получения дополнительной информации.

0 голосов
/ 31 октября 2011

См. Процедуру EnumProcesses из модуля TlHelp32.

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