需要使用微软提供的工具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();