如何在c#中从正在运行的进程中获取在应用程序中打开的文件的路径

时间:2014-09-25 04:03:30

标签: c# asp.net process

我需要通过使用该过程来获取在应用程序中打开的文件的完整路径。

例如,我在记事本中打开了txt的{​​{1}}个文件。而我在桌面上打开了两个记事本。如果我使用了C:\Users\Admin\Documents\sample.txt,我可能会获得所有正在运行的记事本实例和我甚至可以使用Process.GetProcessesByName("notepad");

获取正在运行的流程的完整路径

但我的要求是我需要从流程获取文件的路径(即Mainmodule.Filename)。有可能吗?

所以我尝试过:

sample.txt

1 个答案:

答案 0 :(得分:1)

这完全取决于打开文本文件的应用程序是否包含已打开文件的句柄。例如,Notepad.exe打开文本文件,复制其内容并释放句柄。你留下了窗口标题栏提供的信息,这个信息并不多。

如果相反文件是由winword.exe打开的,则应用程序将保存文本文件的句柄。在这种情况下,您可以从命令行(或通过Process.Start())使用Mark Russinovich的handle.exe,如下所示:

handle.exe test.txt

这将为您提供有关您的应用程序可以解析和使用的text.txt的完整路径的信息。