Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定文件是否已打开_C#_File Io - Fatal编程技术网

C# 确定文件是否已打开

C# 确定文件是否已打开,c#,file-io,C#,File Io,是否有任何方法可以确定文件是否被任何未锁定该文件的应用程序(如记事本)打开 我需要检测给定文件myfile.txt何时不再在任何应用程序(包括记事本)中打开,因此我无法使用file.open(…)以独占方式访问测试,因为该文件没有锁定。您必须调用file.open(…)指定所需的访问标志并检查返回值以确定文件是否已打开或访问是否被拒绝。这是访问文件的推荐安全方法。否。当记事本打开文件时,它已读入整个文件,然后将其关闭。因此,操作系统中没有将记事本的私有内存与磁盘上的文件链接起来的痕迹 以独占方式

是否有任何方法可以确定文件是否被任何未锁定该文件的应用程序(如记事本)打开


我需要检测给定文件myfile.txt何时不再在任何应用程序(包括记事本)中打开,因此我无法使用file.open(…)以独占方式访问测试,因为该文件没有锁定。

您必须调用file.open(…)指定所需的访问标志并检查返回值以确定文件是否已打开或访问是否被拒绝。这是访问文件的推荐安全方法。

否。当记事本打开文件时,它已读入整个文件,然后将其关闭。因此,操作系统中没有将记事本的私有内存与磁盘上的文件链接起来的痕迹

以独占方式打开文件将不起作用,因为记事本没有打开文件。搜索记事本的句柄表将不起作用,因为记事本没有打开文件


检测这种情况的唯一方法是编写一个非托管DLL,将其注入每个进程以扫描其虚拟内存,搜索确切的文件内容。不建议使用。

此文件的可能副本不是副本。记事本没有打开的文件句柄。