【问题标题】:Get/Detect Network drive Format NTFS or FAT获取/检测网络驱动器格式 NTFS 或 FAT
【发布时间】:2018-01-30 20:00:49
【问题描述】:

正如标题所暗示的,我想知道网络驱动器是 NTFS 还是 Fat 格式。

对于本地驱动器和路径,我使用了 DriveInfo,它工作正常,但是当您尝试将驱动器信息与网络驱动器路径一起使用时,我得到了这个异常:

System.Collections.ListDictionaryInternal -Object 必须是根目录(“C:\”)或驱动器号(“C”)。

public static bool IsNtfsDrive(string directory)
{
  try
  {
    // Get drive info
    var driveInfo = new DriveInfo(directory);

    // Check if drive is NTFS partition
    return driveInfo.DriveFormat == Cntfs;
  }
  catch (Exception e)
  {
    Console.WriteLine("Data: " + e.Data + " -Message: " + e.Message);
    return false;
  }
}

【问题讨论】:

    标签: c# networking network-programming format


    【解决方案1】:

    在这里发现了一个类似的问题:

    DriveInfo.GetDrives

    您的应用程序是否以不同的用户身份运行(例如 asp.net 网站)?如果是,驱动器是否真的为该用户映射?您可能会发现驱动器是为您映射的,但实际上并未为您的应用程序运行的用户映射。

    【讨论】:

    • 嗨,我在一个简单的测试控制台应用程序上,我正在尝试在不映射驱动器的情况下执行此操作,例如 DriveInfo 仅通过路径无法判断格式是 NTFS 还是 FAT。跨度>
    • 我们需要检查的路径可以被映射,但不能保证它是。它只是一个可以将文件加载到我们的应用程序中的路径。如果文件存储在 NTFS 驱动器上,我们会尝试访问存储在广告流中的一些元数据。
    • 你如何调用 IsNtfsDrive(字符串目录)?如果我用映射的驱动器号“Z”调用该方法,它就可以工作。但是,如果我尝试使用 \\SERVER001\E 之类的 UNC 路径,我会收到与您相同的错误。
    • 是的,这就是您无法在 Driveinfo 上使用 UNC 的问题,因此我们正在努力实现这一目标,或者出于上述原因的类似原因。
    • 您可以读取注册表 HKEY_CURRENT_USER => 网络以获取用户的映射驱动器列表,然后检查您的 UNC 路径是否匹配(即针对 RemotePath 值)。这样您就可以找到驱动器号映射并在您的函数调用中使用它。
    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多