【问题标题】:Accessing Files from UNC Network Path in C# Application在 C# 应用程序中从 UNC 网络路径访问文件
【发布时间】:2019-01-31 11:56:48
【问题描述】:

我有一个桌面应用程序,用户可以在其中指定输入和输出目录。本地目录工作正常;但是人们开始抱怨使用 UNC 命名约定访问的网络位置。

如果用户粘贴UNC路径,代码使用以下方法检查目录是否存在

if(Directory.Exists(selecteddir)
{
  // all good
}

对于位于其他机器上的某些网络位置,此方法返回 false。我已经使用默认本地机器 UNC 路径 \\?\C:\my_dir 进行了测试,代码工作正常。 应用程序以管理权限运行。

我不熟悉在 C# 代码中访问网络位置。有什么具体的方法可以做到这一点吗?如果用户已经对 UNC 共享执行了基于 windows 的身份验证,c# 应用程序不能访问这些共享吗?

请就如何前进提出建议。

更新:

我也尝试过使用目录信息

DirectoryInfo info1 = new DirectoryInfo(@textbox.Text);
if (info1.Exists)
 {
 return true;
 }

【问题讨论】:

    标签: c# .net network-programming unc


    【解决方案1】:

    我多次遇到这种情况。最后,我认为Directory.Exist 方法存在一些问题,我离开了它。

    现在,我正在使用DirectoryInfo 类来检查这样的情况。

    DirectoryInfo info = new DirectoryInfo(@"Your Path");
    if (info.Exists)
    {
    
    }
    

    目前工作正常。所以还有其他原因,但它对我有用。当然,它并不能解决假冒问题。

    【讨论】:

    • 感谢您的意见。假冒问题到底是什么?
    • 在 .NET 中,“模拟”意味着在特定用户帐户下运行您的代码。
    • 好的。当用户尝试访问网络资源(使用资源管理器)时,会提示他输入密码对吗?如果此人通过提供密码访问资源,我的 c# 应用程序是否可以访问该资源,直到他注销?
    • 我认为不,因为两者是分开的,这意味着如果一个人在资源管理器中的 UAC 中提供凭据,那么该凭据将无法在您的应用程序中使用。
    • 你遇到过这个问题吗?如果是,您是如何解决这个问题的?
    猜你喜欢
    • 2010-09-06
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多