Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизOpenProcess и 64bit applications... Найти похожие ветки
← →
istok20 © (2009-11-28 00:15) [0]OpenProcess в 64битной ОС срабатывает только для 32битных приложений (getlasterror говорит "отказано в доступе")
каким-то образом можно заставить его работать с 64битными процессами? какие есть варианты кроме freepascal и ожидания следующей версии delphi?
код:
procedure TForm1.Button1Click(Sender: TObject);
var
pe: TProcessEntry32;
ph, snap:THandle;//дескрипторы процесса и снимка
mh: hmodule;//дескриптор модуля
procs: array[0..$fff] of DWORD;//массив для хранения дескрипторов процессов
count, cm: Cardinal;//количество процессов
i: Integer;
ModName: array[0..max_path] of char;//имя модуля
LastIndex: Integer; // индекс последнего добавленного Proc
begin
ListView1.Clear;
if not EnumProcesses(@procs, sizeof(procs), count) then
begin
exit;
end;
for i := 0 to count div 4 - 1 do
begin
// Application.ProcessMessages;
ph := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
false, procs[i]);
if ph > 0 then
begin
EnumProcessModules(ph, @mh, 4, cm);
GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName));
with ListView1.Items.Add do
begin
Caption := (string(ModName));
SubItems.Add(IntToStr(procs[i]));
end;
CloseHandle(ph);
end
else
with ListView1.Items.Add do
begin
Caption := "failed: " + (string(ModName));
SubItems.Add(IntToStr(procs[i]));
SubItems.Add(IntToStr(GetLastError) + ":" + GetSystemErrorMessage(GetLastError));
end;
end;
end;
спасибо
← →
Игорь Шевченко © (2009-11-28 00:18) [1]debug-привилегию включить ?
← →
istok20 © (2009-11-28 01:02) [2]
> Игорь Шевченко © (28.11.09 00:18) [1]
> debug-привилегию включить ?
о, помогло, спасибо)
теперь борюсь с получением имени файла процесса, попробовал GetModuleFileNameExW вместо GetModuleFileNameEx - все равно не помогло - для многих x64 процессов не возвращает путь к файлу, сама ф-ция возвращает 0, вот что говорит расшифровка getlasterror: "запрос readprocessmemory или writeprocessmemory был выполнен только частично"
← →
Rouse_ © (2009-11-28 01:12) [3]А что пишешь?
← →
istok20 © (2009-11-28 01:16) [4]учёт использования программ, для которого нужно получать полный путь к файлам запущенных процессов...
← →
istok20 © (2009-11-28 01:52) [5]кажется отрыл точно такую же проблему на немецком форуме, надеюсь, это закроет тему... http://www.delphipraxis.net/post976584.html
← →
istok20 © (2009-11-28 02:13) [6]да, сработало, вопрос закрыт:)
← →
Игорь Шевченко © (2009-11-29 01:14) [7]
> учёт использования программ, для которого нужно получать
> полный путь к файлам запущенных процессов...
Стандартный аудит не ?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.059 c