информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Win32] Как узнать полный путь до файла по PID ' у процесса (или нендлу) 01.12.01 19:22  Число просмотров: 1179
Автор: Dusha Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все дело в том что не для всех процессов такой подход работает,
например для smss.exe не работает. У этих процессов просто нет Module
так что и хендл не получить. Надо как-то иначе.
А через ToolHelp функции я делал тоже фактически (преимущество то что для 9x и NT совместимо).

bool GetFullPath(DWORD  dwPID, TCHAR szFullPath[])
{
  bool      bRet;
  HANDLE      hModuleSnap = NULL; 
  MODULEENTRY32 me32        = {0}; 

    // Take a snapshot of all modules in the specified process. 
  
    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); 
    if (hModuleSnap == (HANDLE)-1) 
        return false; 

  me32.dwSize = sizeof(MODULEENTRY32); 

    if (Module32First(hModuleSnap, &me32)) 
    { 
    strcpy(szFullPath,me32.szExePath);
        bRet = true;   
    } 
    else 
        bRet = false;
 
    // Do not forget to clean up the snapshot object. 

    CloseHandle (hModuleSnap); 
  return bRet;
}

---
<programming>
[Win32] Как узнать полный путь до файла по PID ' у процесса (или нендлу) 28.11.01 08:48  
Автор: dusha Статус: Незарегистрированный пользователь
<"чистая" ссылка>
[Win32] Как узнать полный путь до файла по PID ' у процесса (или нендлу) 28.11.01 09:25  
Автор: IgorR Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Под NT можно так:

HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, processID );

if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;

if ( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
{
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof( szProcessName ) ); //Имя
GetModuleFileNameEx( hProcess, hMod, szPath, sizeof( szPath ) ); //Путь
wsprintf( szItemString, "%s (ID: %u, Path: %s)", szProcessName, processID, szPath );
}
[Win32] Как узнать полный путь до файла по PID ' у процесса (или нендлу) 01.12.01 19:22  
Автор: Dusha Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все дело в том что не для всех процессов такой подход работает,
например для smss.exe не работает. У этих процессов просто нет Module
так что и хендл не получить. Надо как-то иначе.
А через ToolHelp функции я делал тоже фактически (преимущество то что для 9x и NT совместимо).

bool GetFullPath(DWORD  dwPID, TCHAR szFullPath[])
{
  bool      bRet;
  HANDLE      hModuleSnap = NULL; 
  MODULEENTRY32 me32        = {0}; 

    // Take a snapshot of all modules in the specified process. 
  
    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); 
    if (hModuleSnap == (HANDLE)-1) 
        return false; 

  me32.dwSize = sizeof(MODULEENTRY32); 

    if (Module32First(hModuleSnap, &me32)) 
    { 
    strcpy(szFullPath,me32.szExePath);
        bRet = true;   
    } 
    else 
        bRet = false;
 
    // Do not forget to clean up the snapshot object. 

    CloseHandle (hModuleSnap); 
  return bRet;
}

---
[Win32] Как узнать полный путь до файла по PID ' у процесса (или нендлу) 03.12.01 08:17  
Автор: IgorR Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Все дело в том что не для всех процессов такой подход
> работает,
> например для smss.exe не работает. У этих процессов просто
> нет Module
Как это? А вот в System32 загляни...
А ты под админом входишь? А еще б и дебужные привелегии неплохо бы иметь...
Путей нету только для System и Idle. Последний это вообще отдельный разговор, я по нему вопрос уже поднимал.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach