![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
вот собственно код
Код:
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
|
|||
|
|||
|
22-я строка в первом листинге. Надо:
Код:
Spisok.LoadFromFile('exepath.txt');Код:
Spisok.Free; PS. Может потребуется всесто WinExec попользовать createProcess - там с консольными приложениями обычно приходится "поиграться" с флагами. |
|
#3
|
|||
|
|||
|
Цитата:
а по поводу createprocess, можете пожалуйста помочь с кодом ? |
|
#4
|
|||
|
|||
|
Цитата:
Сорри, еще одна правочка нужна (мог бы и сам догадаться). Строка 25: Код:
WinExec(PANsiChar('gmer -del file "'+Spisok.Strings[i]+'"' ), SW_SHOW);По поводу createProcess - на вскидку - не подскажу. Давно было. Но ты сначала так попробуй, авось прокатит. Потом можно попробовать через cmd.exe. Ну а уж если и так не заработает - тогда придется играться с createProcess. |