Tôi muốn tìm kiếm theo chương trình nếu ứng dụng của tôi đang chạy từ ổ đĩa mạng. Cách đơn giản nhất để làm điều đó là gì? Nó sẽ hỗ trợ cả hai đường dẫn UNC (\\127.0.0.1\d$
) và ổ đĩa mạng được ánh xạ (Z :).Cách dễ nhất trong C# để tìm hiểu xem ứng dụng có đang chạy từ ổ đĩa mạng không?
Trả lời
Đây là phương pháp hiện tại của tôi để làm điều này, nhưng nó cảm thấy như có phải là một cách tốt hơn.
private bool IsRunningFromNetworkDrive()
{
var dir = AppDomain.CurrentDomain.BaseDirectory;
var driveLetter = dir.First();
if (!Char.IsLetter(driveLetter))
return true;
if (new DriveInfo(driveLetter.ToString()).DriveType == DriveType.Network)
return true;
return false;
}
Đây là trường hợp ổ đĩa được ánh xạ. Bạn có thể sử dụng lớp DriveInfo
để tìm hiểu xem ổ đĩa a có phải là ổ đĩa mạng hay không.
DriveInfo info = new DriveInfo("Z");
if (info.DriveType == DriveType.Network)
{
// Running from network
}
Phương pháp hoàn chỉnh và Mã mẫu.
public static bool IsRunningFromNetwork(string rootPath)
{
try
{
System.IO.DriveInfo info = new DriveInfo(rootPath);
if (info.DriveType == DriveType.Network)
{
return true;
}
return false;
}
catch
{
try
{
Uri uri = new Uri(rootPath);
return uri.IsUnc;
}
catch
{
return false;
}
}
}
static void Main(string[] args)
{
Console.WriteLine(IsRunningFromNetwork(System.IO.Path.GetPathRoot(AppDomain.CurrentDomain.BaseDirectory))); }
Trong trường hợp sử dụng đường dẫn UNC nó là quitely đơn giản - kiểm tra tên máy chủ trong UNC và kiểm tra rằng nó là localhost (127.0.0.1, :: 1, hostname, hostname.domain.local, địa chỉ ip của máy trạm) hay không.
Nếu đường dẫn không UNC - trích xuất các ký tự ổ đĩa từ đường dẫn và kiểm tra các lớp DriveInfo cho loại hình của nó
if (new DriveInfo(Application.StartupPath).DriveType == DriveType.Network)
{
// here
}
DriveInfo m = DriveInfo.GetDrives().Where(p => p.DriveType == DriveType.Network).FirstOrDefault();
if (m != null)
{
//do stuff
}
else
{
//do stuff
}
Tôi sắp xếp lại các giải pháp của dotnetstep, đó là theo ý kiến của tôi tốt hơn bởi vì nó tránh trường hợp ngoại lệ khi một đường dẫn hợp lệ được thông qua, và nó ném một ngoại lệ nếu có một con đường sai trôi qua, không cho phép giả định đúng hay sai.
//----------------------------------------------------------------------------------------------------
/// <summary>Gets a boolean indicating whether the specified path is a local path or a network path.</summary>
/// <param name="path">Path to check</param>
/// <returns>Returns a boolean indicating whether the specified path is a local path or a network path.</returns>
public static Boolean IsNetworkPath(String path) {
Uri uri = new Uri(path);
if (uri.IsUnc) {
return true;
}
DriveInfo info = new DriveInfo(path);
if (info.DriveType == DriveType.Network) {
return true;
}
return false;
}
Test:
//----------------------------------------------------------------------------------------------------
/// <summary>A test for IsNetworkPath</summary>
[TestMethod()]
public void IsNetworkPathTest() {
String s1 = @"\\Test"; // unc
String s2 = @"C:\Program Files"; // local
String s3 = @"S:\"; // mapped
String s4 = "ljöasdf"; // invalid
Assert.IsTrue(RPath.IsNetworkPath(s1));
Assert.IsFalse(RPath.IsNetworkPath(s2));
Assert.IsTrue(RPath.IsNetworkPath(s3));
try {
RPath.IsNetworkPath(s4);
Assert.Fail();
}
catch {}
}
- 1. Cách dễ nhất để tìm hiểu xem hai tệp có khác nhau theo chương trình không?
- 2. Cách truy cập ổ đĩa mạng chia sẻ trong node.js
- 3. Ứng dụng nói rằng ổ đĩa mạng không tồn tại, nhưng được tìm thấy bằng cách sử dụng OpenFileDialog
- 4. script để ánh xạ ổ đĩa mạng
- 5. Lập trình kiểm tra xem ký tự ổ đĩa có phải là ổ đĩa mạng/chia sẻ
- 6. Phát hiện xem đĩa có nằm trong ổ đĩa DVD
- 7. Có cách nào để phát hiện xem ổ đĩa có phải là ổ SSD không?
- 8. Không thể truy cập ổ đĩa mạng trong PowerShell đang chạy với tư cách là quản trị viên
- 9. Làm thế nào để có được mạng ổ đĩa kích thước trong C# (không có "ổ bản đồ")
- 10. Ổ đĩa mạng được ánh xạ không thể liệt kê trong C#
- 11. Làm cách nào để phát hiện xem ổ đĩa có thùng rác trong C#?
- 12. Làm cách nào để phát hiện xem có ổ đĩa cụ thể nào là ổ cứng không?
- 13. Tìm hiểu số lượng ứng dụng mà ứng dụng của tôi đang chạy?
- 14. Vista UAC - Sự cố khi ánh xạ ổ đĩa mạng
- 15. Cách tìm hiểu xem Eclipse đang chạy trong chế độ gỡ lỗi
- 16. Cách dễ nhất để xác định xem kết nối internet iPhone có khả dụng không?
- 17. Làm cách nào để phát hiện xem có đĩa mềm trong ổ đĩa?
- 18. Kiểm tra xem đường dẫn có đang trên mạng
- 19. Tìm hiểu JVM Eclipse đang chạy trên
- 20. Tăng ổ cắm asio: cách nhanh nhất để đọc tệp từ ổ đĩa cứng?
- 21. Kiểm tra xem ổ cắm có đang nghe trong C
- 22. Có sử dụng GetProcessesByName hay nhất để kiểm tra xem một tiến trình đang chạy không?
- 23. Lập bản đồ ổ đĩa mạng mà không cần mã hóa ổ đĩa trong một tập tin batch
- 24. Ổ đĩa thể rắn có đủ tốt để ngăn chặn sự lo lắng về tắc nghẽn ổ đĩa IO không?
- 25. C# .NET: Cách kiểm tra xem chúng tôi có đang chạy bằng pin không?
- 26. Tìm hiểu xem dòng mã ứng dụng của tôi hiện đang chạy trong chế độ gỡ lỗi của Visual Studio
- 27. cách tìm hiểu NODE_ENV hiện tại của ứng dụng tốc hành đang chạy dưới?
- 28. Tôi làm cách nào để truy cập ổ đĩa mạng được ánh xạ với System.IO.DirectoryInfo?
- 29. Tìm hiểu ai đang khóa tệp trên mạng chia sẻ
- 30. Kết nối lại ổ đĩa mạng đã ngắt kết nối