我想以编程方式查明我的应用程序是否从网络驱动器运行。做这件事最简单的方法是什么?它应该支持UNC路径(\\127.0.0.1\d$
)和映射的网络驱动器(Z :)。C#中最简单的方法来确定应用程序是否从网络驱动器运行?
17
A
回答
2
这是我目前这样做的方法,但感觉应该有一个更好的办法。
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;
}
18
这是映射驱动器的情况。您可以使用DriveInfo
类来确定驱动器a是否是网络驱动器。
DriveInfo info = new DriveInfo("Z");
if (info.DriveType == DriveType.Network)
{
// Running from network
}
完整的方法和示例代码。
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))); }
1
在使用UNC路径情况下,静静简单 - 检查UNC主机名和测试,这是本地主机(127.0.0.1,:: 1,主机名,hostname.domain.local,工作站的IP位址) 或不。
如果路径是不UNC - 提取路径中的驱动器号和测试DriveInfo类其类型
4
if (new DriveInfo(Application.StartupPath).DriveType == DriveType.Network)
{
// here
}
0
DriveInfo m = DriveInfo.GetDrives().Where(p => p.DriveType == DriveType.Network).FirstOrDefault();
if (m != null)
{
//do stuff
}
else
{
//do stuff
}
0
我重新安排dotnetstep的解决方案,这在我看来是更好,因为它在一个有效的路径传递避免了异常,如果有是传递一个错误的道路,它抛出一个异常,这不允许做出真假假设。
//----------------------------------------------------------------------------------------------------
/// <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;
}
测试:
//----------------------------------------------------------------------------------------------------
/// <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. 简单的方法来测试网络应用程序
- 2. 最简单的方法来防止脚本滥用网络应用程序?
- 3. 最终用户在网络驱动器上运行Python脚本而不安装的最简单方法?
- 4. 如何运行Selenium网络驱动器的一个简单的项目用C#
- 5. 在Ubuntu中使用C#运行Selenium网络驱动程序16.04
- 6. 从网络驱动器运行VB.NET应用程序的异常错误Win7
- 7. 简单的方法来ping网络服务器,看看是否运作/活着?
- 8. 什么是最简单的方法来更新我的Android应用程序从网络上的数据
- 9. 用网络驱动器运行Java程序的类路径
- 10. 在Visualstudio中运行存储在网络驱动器上的Web应用程序
- 11. 从C#中的网络驱动器加载程序集(dll)
- 12. 确定网络驱动器的协议
- 13. 在C#应用程序中使用SQL的最简单方法?
- 14. Android网络简单的应用程序
- 15. Mongodb C驱动程序,测试服务器是否运行?
- 16. 是否可以确定Adobe AIR应用程序是否从浏览器运行?
- 17. 确定类x是否从类y派生的最简单方法? (C#)
- 18. 如何从cygwin中运行的java程序映射网络驱动器listFiles()?
- 19. 在C++中访问UNC驱动器/远程网络驱动器
- 20. c#中的网络聊天应用程序的正确方法是什么
- 21. 硒节点无法运行IE或Chrome网络驱动程序
- 22. 确定方法调用是否将在Medium Trust下运行最简单的方法是什么?
- 23. 在家中运行ASP.Net应用程序的简单方法?
- 24. 在Objective-C中否定BOOL的最简单方法是什么?
- 25. 确定iPhone互联网连接是否可用的最简单方法?
- 26. 什么是最简单的方式来编写一个最小的'文件票'网络应用程序?
- 27. 总是运行网络android应用程序的最佳做法是什么?
- 28. C#Windows窗体应用程序从映射的网络驱动器运行缓慢
- 29. 从Android应用程序中的网页下载图片的最简单方法?
- 30. 硒网络驱动程序,C#