Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Name of files opened by a process in window?

How to print name of file open by some process (PID) in window? Or All Processes (PID) currently open a file.
Process Explorer is a utility works for same. But how does it work not mentioned? Any /proc filesystem kind of thing present in windows?

Can we read any Window's Registry?  
I wants to write a programming code And I rarely work on windows. 

Got two solutions in Python:
1. import psutil
2. import win32api, win32con, win32process

But it is still a question to me!
1. How does these libraries works?
2. Any register, memory or virtual file system keeps this information?

If its possible in window, Why this information not present in TasK-Manager?

like image 813
Grijesh Chauhan Avatar asked Oct 04 '12 11:10

Grijesh Chauhan


People also ask

How do you get the files that are opened by an application?

To see the open files for a process, select a process from the list, select the View->Lower Panel View->Handles menu option. All of the handles of type "File" are the open files. Also, a great way to find which application has a file open is by using the Find->Handle or DLL menu option.


2 Answers

Here is the platform independent solution in python.

   import psutil
   p = psutil.Process(os.getpid()) # or PID of process
   p.open_files()

So i refer you psutil package it has too good functions for getting information on running processes

like image 175
Rahul Gautam Avatar answered Oct 09 '22 18:10

Rahul Gautam


Here's a way to get a filename from pid using the Win32 API:

import win32api, win32con, win32process

handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid) #get handle for the pid
filename = win32process.GetModuleFileNameEx(handle, 0) #get exe path & filename for handle

This works on windows only (obviously).

like image 25
Anuj Gupta Avatar answered Oct 09 '22 19:10

Anuj Gupta