zoukankan      html  css  js  c++  java
  • C#解除文件锁定

    public static void StreamsFile(string fi)
            {
                    try
                    {
                        var p = new Process
                        {
                            StartInfo =
                            {
                                FileName = Environment.CurrentDirectory + "\streams64.exe",
                                UseShellExecute = false,
                                Arguments = " -d ""+fi+"""
                            }
                        };
    
                        //执行参数
                        p.StartInfo.UseShellExecute = false;  ////不使用系统外壳程序启动进程
                        p.StartInfo.CreateNoWindow = true;  //不显示dos程序窗口
                        p.StartInfo.RedirectStandardInput = true;
                        p.StartInfo.RedirectStandardOutput = true;
                        p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中
                        p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
                        p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
                        p.StartInfo.UseShellExecute = false;
                        p.Start();
                        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                        p.BeginErrorReadLine();//开始异步读取
                        p.WaitForExit();//阻塞等待进程结束
                        p.Close();//关闭进程
                        p.Dispose();//释放资源
    
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                    }
                }
    
                public static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
                {
                    Console.WriteLine(e.Data);
                }
                public static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
                {
                    Console.WriteLine(e.Data);
                }

    刚刚碰到过这个问题,要使用微软的一个工具,可以在C#代码中通过Process的方式,命令行执行这个工具,就可以解锁了.
    具体看:

    Using Streams

    Usage: streams [-s] [-d] <file or directory>
    -s Recurse subdirectories.
    -d Delete streams. 
    Streams takes wildcards e.g. 'streams *.txt'.

    https://technet.microsoft.com/en-us/Sysinternals/bb897440.aspx

    https://download.sysinternals.com/files/Streams.zip

  • 相关阅读:
    Spring Boot 应用监控
    学习学习SpringSecurity
    Spring Cloud 简介
    thinkphp 请求
    八、主从复制
    七、AOF 持久化
    五、五大数据类型实现原理
    六、RDB 持久化
    四、redis的底层数据结构
    三、五大数据类型详细用法
  • 原文地址:https://www.cnblogs.com/littlehb/p/9030019.html
Copyright © 2011-2022 走看看