【发布时间】:2009-12-16 15:18:57
【问题描述】:
考虑一个网络文件夹:
\\desiis\c$\Company\B2b\Monitor
在那台机器上,任何尝试删除目录Monitor 的进程都会收到错误,因为 LAN 上的用户打开了该目录(可能使用 Windows 资源管理器)。
我能否通过 C# 和 .NET 框架检测是否有任何用户(以及哪个用户)打开/正在使用特定目录?
【问题讨论】:
考虑一个网络文件夹:
\\desiis\c$\Company\B2b\Monitor
在那台机器上,任何尝试删除目录Monitor 的进程都会收到错误,因为 LAN 上的用户打开了该目录(可能使用 Windows 资源管理器)。
我能否通过 C# 和 .NET 框架检测是否有任何用户(以及哪个用户)打开/正在使用特定目录?
【问题讨论】:
我不确定您是否可以获取目录中的特定用户,但 C# .NET 中的 DirectoryInfo 类可能是最好的方法。
http://msdn.microsoft.com/en-us/library/system.io.directoryinfo_members.aspx
查看此链接中的 API,您会注意到有一种方法可以获取有关目录最后一次访问时间的信息,但不是由谁访问。您还可以在尝试删除目录时捕获任何异常,因为它不可用(您可能很清楚会引发异常)。
还请注意,异常捕获的成本很高,您应该通过这样做来评估流程中的任何减速。
【讨论】:
不,我知道不可能。
看来您必须捕获正在发生的异常作为解决方法。
【讨论】: