【问题标题】:Name of files opened by a process in window?窗口中进程打开的文件的名称?
【发布时间】:2012-10-04 11:25:28
【问题描述】:

如何在窗口中打印由某个进程(PID)打开的文件名?或者所有进程 (PID) 当前打开一个文件。
Process Explorer 是一个适用于相同的实用程序。 但是没有提到它是如何工作的? Windows 中存在任何 /proc 文件系统 之类的东西吗?

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

在 Python 中有两个解决方案:
1. 导入psutil
2.导入win32api、win32con、win32process

但这对我来说仍然是一个问题!
1. 这些库是如何工作的?
2. 是否有任何寄存器、内存或虚拟文件系统保存这些信息?

如果可能在窗口中,为什么任务管理器中没有此信息?

【问题讨论】:

    标签: python c windows filesystems windows-api-code-pack


    【解决方案1】:

    这里是python中平台无关的解决方案。

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

    所以我推荐你psutil 包它有很好的功能来获取有关正在运行的进程的信息

    【讨论】:

    • 将在窗口上工作吗?..你能回答我 psutil 是如何工作的吗?
    • “Python 的跨平台进程和系统实用程序模块”这就是 psutil 所说的。确保工作。
    【解决方案2】:

    这是一种使用 Win32 API 从 pid 获取文件名的方法:

    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
    

    这仅适用于 Windows(显然)。

    【讨论】:

    • 查看 Python for Windows 以获取带有 Win32 API 绑定或 PyWin32 包的 python 版本。 Win32 API 是 Windows 中发生的几乎所有事情的权威 API,这个库提供了对这些 API 函数的绑定。
    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2015-11-28
    • 2022-12-18
    相关资源
    最近更新 更多