パスが UNC パスであるかどうかを確認する最も簡単な方法は、もちろん、フル パスの最初の文字が文字またはバックスラッシュであるかどうかを確認することです。これは良い解決策ですか、それとも問題がある可能性がありますか?
私の特定の問題は、パスにドライブ文字がある場合に System.IO.DriveInfo オブジェクトを作成したいということです。
これは私のバージョンです:
public static bool IsUnc(string path)
{
string root = Path.GetPathRoot(path);
// Check if root starts with "\\", clearly an UNC
if (root.StartsWith(@"\\"))
return true;
// Check if the drive is a network drive
DriveInfo drive = new DriveInfo(root);
if (drive.DriveType == DriveType.Network)
return true;
return false;
}
@JaredPars バージョンに対するこのバージョンの利点は、DriveInfo
.
私が見つけた1つのトリックはdInfo.FullName.StartsWith(String.Empty.PadLeft(2, IO.Path.DirectorySeparatorChar))
、dInfoがDirectoryInfoオブジェクトである場所を使用することです-そのチェックがTrueを返す場合、それはUNCパスであり、そうでない場合はローカルパスです