6
A
回答
6
如果你是在談論一個映射的網絡驅動器,你可以使用DriveInfo
的DriveType
property:
var driveInfo = new DriveInfo("S:\");
if(driveInfo.DriveType == DriveType.Network)
// do something
4
Original Answer從另一個SO問題,Check if path is on network。
使用PathIsNetworkPath(PInvoke的reference):
class Program
{
[DllImport("shlwapi.dll")]
private static extern bool PathIsNetworkPath(string pszPath);
static void Main(string[] args)
{
Console.WriteLine(PathIsNetworkPath("i:\Backup"));
}
}
0
var dirInfo = new DirectoryInfo(yourPath);
var driveInfo = new DriveInfo(dirInfo.Root);
if (driveInfo.DriveType == DriveType.Network)
Console.WriteLine("Is a network drive!");
+0
適用於本地路徑和映射網絡路徑,但不適用於UNC路徑 – Jamiec
0
嘗試從Shell Lightweight Utility API如下:
class Class
{
[DllImport("shlwapi.dll")]
private static extern bool PathIsNetworkPath(string Path);
[STAThread]
static void Main(string[] args)
{
string strPath = "D:\\Temp\\tmpfile.txt";
bool blnIsLocalPath = IsLocalPath(strPath);
Console.WriteLine(blnIsLocalPath.ToString());
Console.ReadLine();
}
private static bool IsLocalPath(string Path)
{
return !PathIsNetworkPath(Path);
}
}
事情需要考慮:
- 路徑乞求帶有兩個反斜槓字符(\)被解釋爲通用命名約定(UNC)路徑。
- 以字母后跟冒號(:)開頭的路徑將被解釋爲已裝入的網絡驅動器。但是,PathIsNetworkPath無法通過Microsoft MS-DOS SUBST命令或DefineDosDevice函數識別映射到驅動器號的網絡驅動器
0
可以使用下列方法獲取文件夾的UNC路徑。您正在尋找不正是對,但基於@jgauffin和@Daniel答案可能是有用的
public static string GetUniversalPath(string folderPath)
{
if (String.IsNullOrEmpty(folderPath) || folderPath.IndexOf(":") > 1)
return folderPath;
if (folderPath.StartsWith("\\"))
{
return folderPath;
}
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT RemoteName FROM win32_NetworkConnection WHERE LocalName = '" + folderPath.Substring(0, 2) + "'");
foreach (ManagementObject managementObject in searcher.Get())
{
string remoteName = managementObject["RemoteName"] as String;
if (!String.IsNullOrEmpty(remoteName))
{
remoteName += folderPath.Substring(2);
return remoteName;
}
}
return folderPath;
}
3
,你可以試試這個小黑客:
private static bool IsNetwork(String path)
{
if (path.StartsWith(@"\\"))
return true;
var dir = new DirectoryInfo(path);
var drive = new DriveInfo(dir.Root.ToString());
return drive.DriveType == DriveType.Network;
}
+0
這是涵蓋UNC和映射網絡路徑的唯一解決方案。對我來說足夠了。 – NielW
相關問題
- 1. 如何知道網絡是否連接?
- 2. 對於git,如何知道網絡是否支持ssh或https?
- 3. 如何檢查一個文件夾是否可以通過網絡訪問c#
- 4. 如何知道進程是否正在使用網絡接口?
- 5. C#如何知道一個子網是否是一個更大的網絡的一部分
- 6. 我怎麼知道哪一個是用於創建文件夾
- 7. 我可以知道一個文件是否是一個文件夾?
- 8. scons是否知道SConscript文件位於哪個目錄?
- 9. 如何知道另一個進程是否正在使用某個文件的文件夾?
- 10. 如何知道什麼時候在網絡文件夾上創建文件
- 11. Java - 如何知道打印機是否是網絡打印機?
- 12. 如何知道配置文件是否通過wlanapi連接到無線網絡
- 13. 如何知道一個IP地址是否在本地網絡,xcode
- 14. 如何知道另一個界面中的網絡活動是否完成?
- 15. 如何知道iPhone設備是否擁有3G網絡或Wifi網絡?
- 16. 如何知道一個軟件包是否安裝在Linux中使用C
- 17. 如何知道一個網站是否是非英語的?
- 18. 如何知道文件是否存在?
- 19. c#windows服務 - 檢查網絡文件夾是否存在
- 20. 如何知道一個位置(如:(CLLocation *)newLocation))是否在路上?
- 21. 我如何知道我是否在網絡環境中運行?
- 22. 我如何知道網絡是否受過訓練
- 23. 如何知道一個特定的文件是否被忽略
- 24. 如何知道wget是否實際下載了一個文件?
- 25. 如何知道一個.apk文件是否可以在android
- 26. 如何知道一條記錄是否被刪除使用c#
- 27. 有無論如何知道一個網站是否包含KML文件?
- 28. 如何檢查網絡文件夾是否存在證書使用PowerShell 5
- 29. 如何知道一個文件是否使用PHP完全寫入?
- 30. 如何在asp.net網頁中存儲網絡文件夾位置?
你問UNC路徑?怎麼樣'\\ localhost \ something',或映射的網絡驅動器? – SLaks
[檢查路徑是否在網絡上]的可能的重複(http://stackoverflow.com/questions/2243569/check-if-path-is-on-network) –
對於這兩種情況,UNC路徑和映射的網絡驅動器。 – MyrR