强制关闭文件

时间:2015-09-17 15:05:56

标签: c# exe handle

我已经提交了另一个使用它的进程。 我想强行关闭文件。所以我将继续填补。

我尝试使用Handle.exe,但它没有找到进程

这里有一些帮助是我的代码:

 Process tool = new Process();
            tool.StartInfo.FileName = handlPath;
            tool.StartInfo.Arguments = _pathDirectory + " /accepteula";
            tool.StartInfo.UseShellExecute = false;
            tool.StartInfo.RedirectStandardOutput = true;
            tool.Start();
            tool.WaitForExit();
            string outputTool = tool.StandardOutput.ReadToEnd();

            string matchPattern = @"(?<=\s+pid:\s+)\b(\d+)\b(?=\s+)";
            foreach (Match match in Regex.Matches(outputTool, matchPattern))
            {
                Process.GetProcessById(int.Parse(match.Value)).Kill();
            }

2 个答案:

答案 0 :(得分:1)

我敢肯定,如果某个程序确实对某个文件拥有独占访问权限,那么就有理由这样做。例如,Windows资源管理器在文件处于复制过程时保留它。

很多时候,程序会打开一个文件进行写作,但不会主动写入。例如,当您在MS Word中打开文档时,它将被复制到临时文件,而源文件只是“打开以进行写入”。如果使用标准File.Open方法,您仍会遇到异常,但可以使用File.Copy将其复制到临时文件。

或者,您可以显式指定FileShare.ReadWrite参数并获取对文件的访问权限。在这种情况下,其他程序在访问文件时会遇到问题。

答案 1 :(得分:0)

如果您已经提到了文件名或类型,那么它会更容易,无论如何都要尝试使用cmd。获取进程名称并替换以下代码的ProcessName.exe

首先,您必须在顶部添加using System.Diagnostics;

Process.Start("cmd.exe", "/c taskkill /F /IM ProcessName.exe");