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

原文地址:https://www.cnblogs.com/littlehb/p/9030019.html

时间: 2024-10-13 23:52:57

C#解除文件锁定的相关文章

解除文件的独占锁定

今天看到一段代码: HANDLE hFile = ::CreateFile( L"NUL", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0); 刚开始还以为是作者写错了文件名,把"NULL"写成了"NUL".可是经过查询才知道原来这段代码的作用是代开系统中的所有文件的句柄.然后往下继续所有资料,发现同过这种方式可以解除文件独占的锁定.具体方法: BOOL GetVolumeNameByHandle(HAND

解除IE锁定主页批处理

解除IE锁定主页.bat rem 解除IE锁定主页@echo offecho HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main [1 7 17]>regset.iniecho HKEY_CURRENT_USER\Software\Policies [1 7 17]>>regset.iniecho HKEY_CURRENT_USER\Software\Policies\Microsoft [1 7 17]>>

linux程序设计——文件锁定(第七章)

7.2 文件锁定 这篇为linux的文件锁定,代码在文件锁定代码下载.文件锁定是多用户.多任务操作系统中一个非常重要的组成部分.程序经常需要共享数据,而这通常是通过文件来实现的.因此,对于这些程序来说,建立某种控制文件的方式就非常重要.只有这样,文件才可以通过一种安全的方式更新,或者说,当一个程序正在对文件进行写操作时,文件就会进入一个暂时状态,在这个状态下,如果另外一个程序尝试读这个文件,它就会自动停下来等待这个状态的结束. linux提供了多种特性来实现文件锁定,其中最简单的方式就是以原子操

PHP文件锁定写入实例分享

PHP文件锁定写入实例解析. 原文地址:http://www.jbxue.com/article/23118.html PHP文件写入方法,以应对多线程写入,具体代码: function file_write($file_name, $text, $mode='a', $timeout=30){ $handle = fopen($file_name, $mode); while($timeout>0){ if ( flock($handle, LOCK_EX) ) { // 排它性的锁定 $ti

NIO入门系列之第7章:文件锁定

第7章 文件锁定 7.1  概述 文件锁定初看起来可能让人迷惑.它似乎指的是防止程序或者用户访问特定文件.事实上,文件锁就像常规的 Java 对象锁-它们是劝告式的(advisory)锁.它们不阻止任何形式的数据访问,相反,它们通过锁的共享和获取赖允许系统的不同部分相互协调. 您可以锁定整个文件或者文件的一部分.如果您获取一个排它锁,那么其他人就不能获得同一个文件或者文件的一部分上的锁.如果您获得一个共享锁,那么其他人可以获得同一个文件或者文件一部分上的共享锁,但是不能获得排它锁.文件锁定并不总

VMware Workstation出现“文件锁定失败”

问题现象:电脑关机时挂起VMware Workstation后,第二天运行VMware Workstation出现“文件锁定失败”. 问题原因:在WIN的目录中有*.LCK文件,此文件是用来锁定当前虚拟机状态的. 问题处理:删除所有的*.LCK文件,重启VMware Workstation,运行刚才出问题的系统,一切正常了.

c# 删除程序占用的文件,强力删除文件,彻底删除文件,解除文件占用

c# 删除程序占用的文件,清理删除文件,彻底删除文件,解除文件占用 文件打开时,以共享读写模式打开 FileStream inputStream = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); p.BackgroundImage = new Bitmap(inputStream); inputStream.Dispose(); 删除文件 public void WipeFile(string

php开发之文件指针,文件锁定

(1) rewind() 函数 该函数将文件handle的指针设为文件流的开头,语法如下: bool rewind(resource handle) (2)fseek() 函数 fseek()函数实现文件指针的定位,语法如下: int fseek(resource handle,int offset[,int whence]) handle 参数为要打开的文件 offset为指针位置或者相对whence的参数的偏移量,可以是负值. whence 包括以下三种: a,SEEK_SET,位置等于of

shapefile文件锁定问题

之前很长一段时间,导出shapefile文件老是不能解锁,后缀为wr.lock及sr.lock的lock文件不能消除. 我是释放了要素类及游标等接口的: System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor)            System.Runtime.InteropServices.Marshal.ReleaseComObject(featureClass) 在网上搜了许多资料,按照别人办法用了IWo