【问题标题】:Is there a way to search for a file on all available network shares using C#?有没有办法使用 C# 在所有可用网络共享上搜索文件?
【发布时间】:2012-03-03 02:41:03
【问题描述】:

有没有一种方法可以在所有可用网络共享上搜索文件,而无需实际提供有关共享计算机名称的任何信息?

这就是我想要做的。在服务器共享文件夹中,我有一个配置文件,用于指定该共享的 UNC 信息。从该 LAN 上的另一个桌面,我想运行一个程序来搜索该文件并根据该文件内容将驱动器映射到该文件夹​​。

我的技术支持人员经常需要将这些驱动器映射到共享文件夹。与他们通电话的人可能对计算机非常缺乏经验。我正在努力寻找一种方法让他们的工作更轻松。

感谢您提供的任何帮助。

【问题讨论】:

  • 您客户的用户是否在 Windows 域 (Active Directory) 上?或者,如果受您问题影响的用户是技术支持人员本身(根据您问题的措辞我无法判断),他们是否在 Windows 域中?
  • 有时是,有时不是。我们的客户是我们需要为之服务的人。所以受影响的人不是技术人员。
  • 客户网络上的任何计算机都可以包含与您的情况相同的共享,或者是否存在共同约定?可访问共享也仅限于当前网段中的计算机,还是应该认为客户正在从不同子网访问文件共享是合理的?
  • 是的,任何计算机都可以包含共享。很可能所有机器都在同一个子网上。这些只是小型医生办公室。从 2 到 8 台计算机。通常,但并非总是没有域。只是简单的文件共享。

标签: c# winforms network-share mapped-drive


【解决方案1】:

我不记得列出可用网络共享的 Windows API(尽管我可能错过了它),但一种快速(处理速度慢的代码)方法是使用 this CodeProject article 中的方法发现网络上的计算机(或至少大部分),并尝试连接到@"\\" + currentIPOrHostName 以查看您是否能够获取共享列表。我从来没有做过,所以我不能保证它会起作用,但除非其他人想出更好的方法,否则值得一试。

【讨论】:

  • 谢谢 M,这会让我开始。
【解决方案2】:

试试这个(C# 4.0):

    private void ShowDrives()
    {
        DriveInfo[] drives = DriveInfo.GetDrives();
        foreach (DriveInfo drive in drives)
        {
            MessageBox.Show(drive.Name);
        }
    }

【讨论】:

  • 这使驱动器可用,而不是共享。不过谢谢你的想法。
猜你喜欢
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
  • 2019-09-17
相关资源
最近更新 更多