我正在尝试为我的大学项目构建AV并且在扫描期间我得到异常 - 访问被拒绝,文件被另一个进程使用,因此无法扫描文件。而且当它在Windows资源管理器中打开时,同样的事情发生。我也使用Fileshare.ReadWrite但没有用。它主要是C:驱动文件。
答案 0 :(得分:2)
它可能与您的操作系统(可能是Windows)有关,而与您使用的特定语言(C#)无关。如果操作系统内核需要独占访问,则应该很难或不可能避免。
如果您在Linux或其他Posix系统上编码,则不会出现此问题:多个进程可以同时访问同一个文件(您可以使用锁定来防止这种情况)。
答案 1 :(得分:0)
只使用FileShare.Read,而不是ReadWrite。您还必须接受将存在一些无法扫描的文件(即页面文件),因此您应该在读取代码周围添加异常处理程序,并在读取文件时忽略(或报告)异常。
答案 2 :(得分:0)
您可以尝试使用Stream:
Stream stream = new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.Read)
请不要忘记最后处理它,或将其包含在使用声明
中