我想知道文件是否由任何进程(包括调用者)打开。已经发布了许多建议,这些建议往往围绕着尝试独占打开文件并捕获异常。
在我的实例中,这并没有被证明是一种万无一失的方法。我相信在我的具体情况下我可以通过扫描所有正在运行的进程的File类型的所有打开句柄来获得。
答案 0 :(得分:1)
一个穷人的方式是从sysinternals shell来处理。我不知道它是否可以分发。它必须以管理员身份运行(我很确定你需要管理员权限才能做你想做的事情)。无论如何,如果你可以只是shell并将输出重定向到一个文件或捕获它的标准输出,那么你只需要解析它的输出来得到你想要的。我在网上做了一个搜索,并没有出现标记r。曾经向他的公用事业公司发布了消息来源。
如果你有一个你分发的应用程序,这显然不是一个好的解决方案,但如果它只是在内部也许这就足够了。最好的问候, 别
答案 1 :(得分:1)
我认为你不能简单地用.NET和P / Invoke来解决这个问题。您需要访问低级功能。在另一个使用驱动程序开发工具包(DDK)的论坛中查看AdaraCD在此主题中发布的解决方案:
答案 2 :(得分:0)
我记得代码handle.exe有开源,所以你可以使用这个很棒的实用工具作为参考。