【问题标题】:How to check if UNC path is DFS path?如何检查UNC路径是否为DFS路径?
【发布时间】:2012-11-26 20:11:41
【问题描述】:

假设我有三个 UNC 路径:

\\it\may\be\samba\on\linux.txt
\\maybe\its\on\windows\fileserver.txt
\\and\that\one\is\dfs.txt

如何检查(在 c# 中)哪个是 dfs 映射,哪个不是?

【问题讨论】:

  • 根据this,您需要检查第一部分(在`\\`之后)是域还是服务器。但是,这需要进行某种查找,这需要时间并且应该异步完成(取决于您的应用程序的性质)。为什么您首先需要知道差异?这对您的应用应该没有影响。
  • @Christian.K 我正在使用NetFileEnum 来检查谁打开了文件。如果它在 dfs 上,我首先需要找到保存该文件的目标文件服务器,以相应地修改 UNC 路径,以便 NetFileEnum 正常工作。 NetDfsGetInfo 似乎适用于此,但返回非 dfs 路径的速度很慢。

标签: c# unc microsoft-distributed-file-system


【解决方案1】:

找到了解决方案,但它有一个缺点。如果我传入 dfs 根(或链接),则对 NetDfsGetInfo 的调用将返回有关 dfs 根(或链接)的信息。如果它是一个不在 dfs 上的 UNC 路径,它会返回一个错误。

唯一的缺点是返回该错误大约需要一秒钟,返回 dfs info 会立即产生结果。

如果有人想使用此解决方案:
NetDfsGetInfo 上的文档说您必须在返回的缓冲区上调用 NetApiBufferFree,即使您收到错误消息。

【讨论】:

  • 我希望 LOVE 看看您为此创建的代码。我希望我能够将它转换为在 VBS 中工作,但得到它会很棒。
  • @takrl - NetDfsGetInfo 的任何替代品?这种调用成本太高,而且在拥有大量用户群的环境中需要很长时间。
  • @user1043981 我不知道更好......这就是我在没有得到这个问题的任何答案后自己发现的。如果您有任何其他想法,请发布...
  • @takrl 感谢 C# 代码!知道如何在 VBS 中做同样的事情吗?
  • 你有没有检查过NetDFSGetClientInfo等其他函数之一是否更快?
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2011-04-24
  • 2016-01-25
  • 2011-12-26
  • 1970-01-01
  • 2014-03-09
相关资源
最近更新 更多