在C#/.NET的应用程序编程开发中,现需要检测一个指定的文件是否被占用,并且检测是哪一个(或者哪些)进行占用了这个文件,应该如何实现呢?
Rector
2020-04-08 提问
使用Handle.exe来读取文件被占用的进程列表,如下:
2020-04-08 回答
在早期的Windows操作中,是不可能可靠地获取锁定文件的进程列表的,因为Windows根本不跟踪这些信息。为了支持Restart Manager API,现在的Windows操作跟踪了这些信息。所以可以比较可靠地获取锁定(占用)文件的进程列表了,示例代码如下:
注:以上代码需要访问注册表的权限,所以像IIS这样的应用请尽量不要使用这种方式(存在极大的安全隐患)!!!
码龄: 3091天
专注.NET/.NET Core