需要使用微软提供的工具Handle.exe
string fileName = @"H:\abc.dll";//要检查被那个进程占用的文件
Process tool = new Process();
tool.StartInfo.FileName = @"H:\软件\Handle\handle64.exe";
tool.StartInfo.Arguments = fileName + " /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();
}
Console.ReadKey();