Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
[Win32] Как узнать полный путь до файла по PID ' у процесса (или нендлу) 01.12.01 19:22 Число просмотров: 1139
Автор: 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. Последний это вообще отдельный разговор, я по нему вопрос уже поднимал.
|
|
|