Discussion:
Getting Processes' File Names
(too old to reply)
Thomas Rogg
2004-02-11 15:33:49 UTC
Permalink
Hello list,

(Note sure if its the write list, but I'll post it anyways.)

I need to get a list of all file names (with paths) of all running
applications I have access to (other modules, for example .DLLs, are not
needed). The following is what I coded together. My problem is that my code
uses the PSAPI API (EnumProcessModules, GetModuleFileNameEx) and PSAPI
requires Windows NT. As I need my program to run under Windows 9x, too, I am
searching for a way to do the same thing without PSAPI. Anybody have an
idea?

Thank you,

-- Thomas

-----
Code begins here (C)
-----

PROCESSENTRY32 processInfo;
HANDLE hSnapshot, hProcess;
HMODULE hModules[MAX_MODULES];
DWORD size;
char fileName[MAX_PATH + 1];
int i;

hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot == INVALID_HANDLE_VALUE)
return;

processInfo.dwSize = sizeof(PROCESSENTRY32);
while(Process32Next(hSnapshot, &processInfo)!=FALSE)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE,
processInfo.th32ProcessID);
if(!hProcess)
continue;

if(EnumProcessModules(hProcess, hModules, MAX_MODULES, &size) && size !=
0)
{
fileName[MAX_PATH] = '\0';
size /= sizeof(HMODULE);

for(i = 0; i < size; i++)
if(GetModuleFileNameEx(hProcess, hModules[i], fileName, MAX_PATH) != 0)
{
FILE *f; // write filename into file
f = fopen("C:\\processlog.txt", "a");
fprintf(f, "%s\n", fileName);
fclose(f);
}
}

CloseHandle(hProcess);
}

CloseHandle(hSnapshot);

-----
Code ends here
-----

-----
Example output (to C:\processlog.txt) begins here
-----

C:\WINDOWS\Explorer.EXE
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\System32\atwtusb.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\SHELL32.dll
C:\Program Files\Java\j2re1.4.2_03\bin\jusched.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\WININET.dll
C:\WINDOWS\system32\CRYPT32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\Program Files\AVPersonal\AVGNT.EXE
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\VERSION.dll
C:\WINDOWS\system32\LZ32.dll
C:\WINDOWS\System32\MFC42.DLL
C:\WINDOWS\system32\MSVCRT.dll
C:\WINDOWS\system32\GDI32.dll
C:\Program Files\Spamihilator\spamihilator.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\System32\WINMM.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\System32\MSVCR70.dll
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Trillian\trillian.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\System32\WSOCK32.dll
C:\WINDOWS\System32\WS2_32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\System32\WS2HELP.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\USER32.DLL
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\comdlg32.dll
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Windows Media Player\wmplayer.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\System32\wmp.dll
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Messenger\msmsgs.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\ole32.dll
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Mozilla Firefox\firefox.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\Program Files\Mozilla Firefox\xpcom.dll
C:\Program Files\Mozilla Firefox\nspr4.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\System32\WSOCK32.dll
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files\Mozilla Firefox\firefox.exe


-----
Example output (to C:\processlog.txt) ends here
-----
lallous
2004-02-11 15:51:27 UTC
Permalink
Hello

Take a look at this http://www.codeproject.com/threads/processapi.asp

--
Elias
Post by Thomas Rogg
Hello list,
(Note sure if its the write list, but I'll post it anyways.)
I need to get a list of all file names (with paths) of all running
applications I have access to (other modules, for example .DLLs, are not
needed). The following is what I coded together. My problem is that my code
uses the PSAPI API (EnumProcessModules, GetModuleFileNameEx) and PSAPI
requires Windows NT. As I need my program to run under Windows 9x, too, I am
searching for a way to do the same thing without PSAPI. Anybody have an
idea?
Thank you,
-- Thomas
-----
Code begins here (C)
-----
PROCESSENTRY32 processInfo;
HANDLE hSnapshot, hProcess;
HMODULE hModules[MAX_MODULES];
DWORD size;
char fileName[MAX_PATH + 1];
int i;
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot == INVALID_HANDLE_VALUE)
return;
processInfo.dwSize = sizeof(PROCESSENTRY32);
while(Process32Next(hSnapshot, &processInfo)!=FALSE)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE,
processInfo.th32ProcessID);
if(!hProcess)
continue;
if(EnumProcessModules(hProcess, hModules, MAX_MODULES, &size) && size !=
0)
{
fileName[MAX_PATH] = '\0';
size /= sizeof(HMODULE);
for(i = 0; i < size; i++)
if(GetModuleFileNameEx(hProcess, hModules[i], fileName, MAX_PATH) != 0)
{
FILE *f; // write filename into file
f = fopen("C:\\processlog.txt", "a");
fprintf(f, "%s\n", fileName);
fclose(f);
}
}
CloseHandle(hProcess);
}
CloseHandle(hSnapshot);
-----
Code ends here
-----
-----
Example output (to C:\processlog.txt) begins here
-----
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\System32\atwtusb.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\SHELL32.dll
C:\Program Files\Java\j2re1.4.2_03\bin\jusched.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\WININET.dll
C:\WINDOWS\system32\CRYPT32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\Program Files\AVPersonal\AVGNT.EXE
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\VERSION.dll
C:\WINDOWS\system32\LZ32.dll
C:\WINDOWS\System32\MFC42.DLL
C:\WINDOWS\system32\MSVCRT.dll
C:\WINDOWS\system32\GDI32.dll
C:\Program Files\Spamihilator\spamihilator.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\System32\WINMM.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\System32\MSVCR70.dll
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\devenv.exe
C:\Program Files\Trillian\trillian.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\System32\WSOCK32.dll
C:\WINDOWS\System32\WS2_32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\System32\WS2HELP.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Trillian\trillian.exe
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\USER32.DLL
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\comdlg32.dll
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Kazaa Lite K++\KazaaLite.kpp
C:\Program Files\Windows Media Player\wmplayer.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\System32\wmp.dll
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Windows Media Player\wmplayer.exe
C:\Program Files\Messenger\msmsgs.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\ole32.dll
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Messenger\msmsgs.exe
C:\Program Files\Mozilla Firefox\firefox.exe
C:\WINDOWS\System32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\Program Files\Mozilla Firefox\xpcom.dll
C:\Program Files\Mozilla Firefox\nspr4.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\System32\WSOCK32.dll
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files\Mozilla Firefox\firefox.exe
-----
Example output (to C:\processlog.txt) ends here
-----
Gary Chanson
2004-02-11 16:24:48 UTC
Permalink
Post by Thomas Rogg
Hello list,
(Note sure if its the write list, but I'll post it anyways.)
I need to get a list of all file names (with paths) of all running
applications I have access to (other modules, for example .DLLs, are not
needed). The following is what I coded together. My problem is that my code
uses the PSAPI API (EnumProcessModules, GetModuleFileNameEx) and PSAPI
requires Windows NT. As I need my program to run under Windows 9x, too, I am
searching for a way to do the same thing without PSAPI. Anybody have an
idea?
On Win9x, you have to use the ToolHelp library to enumerate running
processes. On NT, you have to use PSAPI. On Win2K/XP, you can use either.
--
-GJC [MS Windows SDK MVP]
-Software Consultant (Embedded systems and Real Time Controls)
- http://www.mvps.org/ArcaneIncantations/consulting.htm
-***@mvps.org
Loading...