我正在寻找一种方法来监视锁定文件的目录(及其子目录),即当应用程序打开文件并将其锁定时,应该在我的应用程序中触发事件。
到目前为止,我一直在使用FileSystemWatcher用于其他目的,例如检测重命名,更新等。但是观看锁定[使用上次访问]需要按指定Here进行注册表调整 到目前为止,这不是一个选择。
到目前为止,我所想到的其他解决方案是继续使用另一个线程中的FileInfo对象查找“LastAccess”属性的更改,并验证文件是否已锁定。
有更好的解决方案吗?
答案 0 :(得分:1)
不幸的是,无法查看文件是否被进程锁定。
但您可以随时尝试访问该文件并根据以下内容触发事件:
public bool IsFileLocked(string filePath)
{
try
{
using (File.Open(filePath, FileMode.Open)){}
}
catch (IOException e)
{
retturn true;
}
return false;
}
当您的应用程序无法访问该文件时(因此它正被另一个程序使用),此函数将返回true,否则返回false。
答案 1 :(得分:0)
您可以尝试通过Sysinternals检查handle.exe,有人有类似问题:Check for locked files in Directory and find locking applicaiton
我想你可以从你的应用程序中调用它。