我可以检测网络光盘是否是NAS(网络附加存储)?

时间:2017-06-16 08:48:51

标签: c# .net nas

我遇到用户将文件和数据移动到NAS的问题。这会导致许多问题。我想检测网络光盘用户是否已将文件和数据移动到NAS。我想以编程方式从C#程序中执行此操作。我想提醒他们这一举动可能会引发问题。这可能吗?我发现无法判断网络驱动器是否是来自C#/ .Net的NAS,但是我还没有发现有人说它也无法完成。 有没有办法以编程方式判断网络驱动器是否为NAS?

我修改了我的问题。 但是,我已经与人们讨论了这个问题,我并不相信网络光盘是NAS的问题。感谢您在这里的评论,我问了几个问题,结果发现我们在谈论不同的事情。无论使用何种类型的网络存储,问题都可能是相同的。 但出于好奇,是否可以通过编程方式判断网络光盘是否为NAS?

1 个答案:

答案 0 :(得分:2)

你需要将这三件事结合在一起:

How can I determine if a string is a local folder string or a network string?Get the drive letter from a path string or FileInfoHow can I determine if a given drive letter is a local/mapped/usb drive?

所以:

string path = "\\some-unc-path\file.txt"; // or: @"H:\file2.txt" for mapped network drives

if (new Uri(path).IsUnc)
{
    // network
}
else
{
    var fileInfo = new FileInfo(path);
    var driveLetter = Path.GetPathRoot(fileInfo.FullName);
    var driveInfo = new DriveInfo(driveLetter);
    if (driveInfo.DriveType == DriveType.Network)
    {
        // network
    }   
}
  

出于好奇,是否可以通过编程方式判断网络光盘是否为NAS?

不,这是抽象的奇迹。您将SMB与设备进行通信,它会与SMB进行对话。任何可以与SMB通信的设备都可以在另一端,无论是Windows或Linux服务器,台式机,NAS,SAN,甚至路由器和电视现在都在谈论SMB,因此您可以插入USB驱动器并将其暴露在您的家庭网络上。

可以通过探测知名端口来检测NAS,其中NASs正在托管除了SMB之外的额外服务,例如他们的(网络)管理界面并看到他们返回的内容,但我不会去因为我不知道会解决什么问题。