1

我想知道文件是否被任何进程(包括调用者)打开 已经发布了许多建议,这些建议往往围绕着尝试以独占方式打开文件并捕获异常。

在我的例子中,这并没有被证明是一种万无一失的方法。我相信在我的具体情况下,我可以通过扫描所有正在运行的进程的文件类型的所有打开句柄的名称来解决。

4

3 回答 3

1

一个穷人的方法是从 sysinternals 壳到 handle.exe。我不知道它是否可以分发。它必须以管理员身份运行(我很确定你需要管理员权限才能做你想做的事)。无论如何,如果您可以只使用外壳并将输出重定向到文件或捕获其标准输出,那么您只需解析其输出即可获得所需的内容。我在互联网上进行了搜索,但似乎没有那个标记 r。曾经发布过他的实用程序的源代码。

如果你有一个你分发的应用程序,这显然不是一个好的解决方案,但如果它只是在内部,也许这已经足够好了。

最好的问候,唐

于 2009-10-05T22:01:33.680 回答
1

我认为您不能简单地使用 .NET 和 P/Invoke 来解决这个问题。您将需要访问低级功能。请参阅 AdaraCD 在另一个使用驱动程序开发工具包 (DDK) 的论坛中的此线程中发布的解决方案:

枚举进程的句柄

于 2009-10-16T11:12:59.287 回答
0

我记得代码 handle.exe 有开源,所以你可以使用这个伟大的实用程序作为参考。

于 2009-10-15T07:28:34.710 回答