2012-10-04 39 views
11

Làm cách nào để in tên tệp mở bằng một số tiến trình (PID) trong cửa sổ? Hoặc tất cả các quy trình (PID) hiện đang mở một tệp.
Process Explorer là một tiện ích hoạt động giống nhau. Nhưng nó hoạt động như thế nào? Bất kỳ /proc hệ thống tệp loại điều nào có trong cửa sổ?Tên tệp được mở bởi một quy trình trong cửa sổ?

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

Got hai giải pháp bằng Python:
1. nhập khẩu psutil
2. nhập khẩu win32api, win32con, win32process

Nhưng nó vẫn là một câu hỏi đối với tôi!
1. Các thư viện này hoạt động như thế nào?
2. Bất kỳ đăng ký, bộ nhớ hoặc hệ thống tệp ảo nào đều giữ thông tin này?

Nếu có thể trong cửa sổ, Tại sao thông tin này không có trong TasK-Manager?

Trả lời

22

Đây là giải pháp độc lập nền tảng trong python.

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

Vì vậy, tôi giới thiệu bạn psutil gói nó có chức năng quá tốt để có được thông tin về tiến trình đang chạy

+0

Sẽ hoạt động trên cửa sổ? .. Bạn có thể trả lời tôi cách psutil hoạt động không? –

+0

"mô-đun tiện ích hệ thống và quy trình đa nền tảng cho Python" đây là những gì psutil nói. Làm việc chắc chắn. –

1

Dưới đây là một cách để có được một tên tập tin từ pid sử dụng API Win32:

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 

này chỉ hoạt động trên các cửa sổ (hiển nhiên).

+0

Thư viện này hoạt động như thế nào? –

+1

Kiểm tra [Python dành cho Windows] (http://www.python.org/getit/windows/) cho các phiên bản python đi kèm với các ràng buộc API Win32 hoặc [PyWin32] (http://sourceforge.net/projects/pywin32 /) gói. Win32 API là API chính xác cho hầu hết mọi thứ xảy ra trong Windows và thư viện này cung cấp các ràng buộc cho các hàm API đó. –

+0

Cảm ơn câu trả lời của bạn –

Các vấn đề liên quan