C# 如何找出哪个windows进程正在使用文件?

C# 如何找出哪个windows进程正在使用文件?,c#,windows,winforms,file,process,C#,Windows,Winforms,File,Process,关于使用Handle或processmonitor,我已经看到了一些答案,但我希望能够在我的代码(C#)中找到哪个进程正在锁定文件 例如,我打开了两个文件,如test.xlsx和test_1.xlsx,我想关闭text.xlsx的唯一进程,但不管我找到什么,只关闭我上次打开的excel文件或两个文件。 这只是一个例子,我有这么多不同类型的文件,我只需要关闭几个 我尝试“处理”,但它需要管理权限,并且restart manager也没有提供我在不同示例中使用的确切进程id。ASP.NET和WinF

关于使用Handle或processmonitor,我已经看到了一些答案,但我希望能够在我的代码(C#)中找到哪个进程正在锁定文件

例如,我打开了两个文件,如test.xlsx和test_1.xlsx,我想关闭text.xlsx的唯一进程,但不管我找到什么,只关闭我上次打开的excel文件或两个文件。 这只是一个例子,我有这么多不同类型的文件,我只需要关闭几个


我尝试“处理”,但它需要管理权限,并且restart manager也没有提供我在不同示例中使用的确切进程id。

ASP.NET和WinForms?这两个问题都与此问题毫无关系。请查看此答案:@AliEzzatOdeh我已经用restart manager检查了该解决方案,但它没有按我的需要工作。可能(直接)不可能得到最终答案。Excel进程(如您所述)拥有多个窗口。这些窗口属于同一进程。要关闭一个,您应该检查标题以查找文件名。你知道这是怎么回事。这只是一个可能的场景:没有特定的协议可以让您识别正确的进程并关闭它(杀死它?)以释放正确的句柄。也许可以更详细地解释一下为什么你有这么多不同类型的文件,而我只需要关闭其中的几个。这是互操作封送处理问题吗?然后捕获异常并重新安排操作,或者检查文件是否正在使用Restart Manager技术:(指向您已经拥有的SO解决方案的链接)然后,当发现文件被锁定时,重新安排或执行应用程序打算执行的任何操作(任何备份程序的常见场景)。