首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中找出应用程序是否从网络驱动器运行的最简单方法是什么?

在C#中找出应用程序是否从网络驱动器运行的最简单方法是什么?
EN

Stack Overflow用户
提问于 2011-12-26 15:06:28
回答 6查看 3.1K关注 0票数 19

我想以编程方式确定我的应用程序是否从网络驱动器运行。做这件事最简单的方法是什么?它应该同时支持UNC路径(\\127.0.0.1\d$)和映射网络驱动器(Z:)。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-26 15:11:59

这适用于映射驱动器的情况。您可以使用DriveInfo类来确定驱动器a是否是网络驱动器。

代码语言:javascript
复制
DriveInfo info = new DriveInfo("Z");
if (info.DriveType == DriveType.Network)
{
    // Running from network
}

完整的方法和示例代码。

代码语言:javascript
复制
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)));    }
票数 23
EN

Stack Overflow用户

发布于 2011-12-26 15:17:49

代码语言:javascript
复制
if (new DriveInfo(Application.StartupPath).DriveType == DriveType.Network)
{    
    // here   
}
票数 4
EN

Stack Overflow用户

发布于 2011-12-26 15:17:37

这是我目前的方法,但我觉得应该有更好的方法。

代码语言:javascript
复制
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;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8633680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档