Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.04.2017, 18:20
Musihina Musihina вне форума
Прохожий
 
Регистрация: 11.04.2017
Сообщения: 2
Версия Delphi: Delphi 10.1
Репутация: 10
По умолчанию Построчное чтение из файла в winexec

вот собственно код

Код:
ProcessEntry.dwSize := SizeOf(ProcessEntry);
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  If Process32First(hSnapshot, ProcessEntry) then
    While Process32Next(hSnapshot, ProcessEntry) do
      if ExtractFileName(ProcessEntry.szExeFile) = 'TrueCrypt.exe' then
        dwPID := ProcessEntry.th32ProcessID;
  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
    false, dwPID);
  SetLength(sFileName, MAX_PATH);
  GetModuleFileNameEx(hProcess, 0, PChar(sFileName), MAX_PATH);
  Memo1.Lines.Add(ExtractFilePath(sFileName));
  CloseHandle(hProcess);
  CloseHandle(hSnapshot);
  SL := TStringList.Create;
 FindFiles(ExtractFilePath(sFileName), '*.exe' , SL , true);
 SL.SaveToFile('exepath.txt');
 FindFiles(ExtractFilePath(sFileName), '*.dll' , SL , true);
 SL.SaveToFile('exepath.txt');
 Memo1.Lines.LoadFromFile('exepath.txt');
 Spisok:=TStringList.Create;
  try
    SL.LoadFromFile('exepath.txt');
    for i:=0 to Spisok.Count-1 do
    begin
     WinExec(PANsiChar('gmer -del file "'+SL.Strings[i]+'"' ), SW_SHOW);
    end;
  finally
    SL.Free;
  end;

процедура для поиска файлов по маске

Код:
var
  SearchRec: TSearchRec;
  FindResult: Integer;
begin
  List.BeginUpdate;
  try
    StartFolder := IncludeTrailingBackslash(StartFolder);
    FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
    try
      while FindResult = 0 do
        with SearchRec do
        begin
          if (Attr and faDirectory) <> 0 then
          begin
            if ScanSubFolders and (Name <> '.') and (Name <> '..') then
              FindFiles(StartFolder + Name, Mask, List, ScanSubFolders);
          end
          else
          begin
            if MatchesMask(Name, Mask) then
              List.Add(StartFolder + Name);
          end;
          FindResult := FindNext(SearchRec);
        end;
    finally
      FindClose(SearchRec);
    end;
  finally
    List.EndUpdate;
  end;

Работает по такому прицепу:
1. Находит процесс "TrueCrypt.exe"
2. Получает его место хранения
3. От туда по маске получает пути до *.exe и *.dll файлов
а дальше уже эти пути нужно по одному забить в winexec и послать команду на удаление через Gmer
P.s. гмер - это такая программка работающая на уровне ядра, которая умеет принимать команды через консоль на непосредственное удаление файлов
Код:
WinExec(PANsiChar('gmer -del file "путь"  ' ), SW_HIDE);
пожалуйста помогите !
Ответить с цитированием
  #2  
Старый 11.04.2017, 19:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

22-я строка в первом листинге. Надо:
Код:
Spisok.LoadFromFile('exepath.txt');
Ну и 28-я там-же:
Код:
Spisok.Free;

PS. Может потребуется всесто WinExec попользовать createProcess - там с консольными приложениями обычно приходится "поиграться" с флагами.
Ответить с цитированием
  #3  
Старый 11.04.2017, 19:33
Musihina Musihina вне форума
Прохожий
 
Регистрация: 11.04.2017
Сообщения: 2
Версия Delphi: Delphi 10.1
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
22-я строка в первом листинге. Надо:
Код:
Spisok.LoadFromFile('exepath.txt');
Ну и 28-я там-же:
Код:
Spisok.Free;

PS. Может потребуется всесто WinExec попользовать createProcess - там с консольными приложениями обычно приходится "поиграться" с флагами.
чего-то ошибку выдает теперь скриншот
а по поводу createprocess, можете пожалуйста помочь с кодом ?
Ответить с цитированием
  #4  
Старый 12.04.2017, 00:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Musihina
чего-то ошибку выдает теперь скриншот
а по поводу createprocess, можете пожалуйста помочь с кодом ?

Сорри, еще одна правочка нужна (мог бы и сам догадаться). Строка 25:
Код:
WinExec(PANsiChar('gmer -del file "'+Spisok.Strings[i]+'"' ), SW_SHOW);

По поводу createProcess - на вскидку - не подскажу. Давно было. Но ты сначала так попробуй, авось прокатит. Потом можно попробовать через cmd.exe. Ну а уж если и так не заработает - тогда придется играться с createProcess.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter