无法在应用程序中移动文件并杀死进程

时间:2015-12-16 05:12:59

标签: c# kill-process

我使用winrar在我的应用程序中提取rar文件。之后提取物是竞争我需要的 移动提取的文件,但它有时会出现此错误: 该进程无法访问该文件,因为它正由另一个进程使用

我猜错误是关于winrar所以我杀了winrar进程但错误存在

我使用(Process.HasExited)强制程序睡眠5分钟我可以杀死进程但有以下问题: 但该进程无法访问该文件,因为它正由另一个进程使用  并使用代码杀死进程:

 try
            {
                Process proc = Process.GetProcessById(id);
                proc.Kill();
            }
            catch (Exception ex)
            {
                Process[] processlist = Process.GetProcesses();
                foreach (Process p in Process.GetProcesses("."))
                {
                    try
                    {
                        if (p.ProcessName.ToLower().Contains("winrar"))
                        {
                            string str =            Bussiness.ClsCommandLine.GetCommandLine(p);
                            if (str.ToLower().Contains((fileName.ToLower()))
                            {
                                Process prc = Process.GetProcessById(p.Id);
                                prc.Kill();
                            }
                        }
                    }
                    catch (Exception ex1)
                    {
                        result = false;
                    }
                }
            }

任何想法?

1 个答案:

答案 0 :(得分:0)

不能评论,所以我必须添加一个答案:

(假设您在win vista之后)使用资源监视器查看关联的句柄(资源监视器 - > CPU - >检查所有复选框 - >关联的句柄)并查找具有的任何进程(图像) a处理您要移动的文件

例如,图像 "的WinRAR.exe" 可能有" c:\ users \ ~username \ my documents \ directory \ uncompressedfile.file"

这可以让您了解您正在尝试阅读/修改/

的文件的内容