如何使用C#访问网络驱动器?

时间:2019-07-19 15:38:51

标签: c# networking drive

在.Net Console应用程序中,我试图访问网络驱动器上的文件。如果用户已登录并保存了访问凭据,则该程序将顺利运行。如果该用户未登录或是另一个用户,则System.IO.Directory.Exists返回false。该程序设置为在计划的事件上在Windows 2012 Server上运行。

我已经删除了用户帐户中的凭据,因此可以像测试新用户一样对其进行测试。我眼中的问题是,我需要以某种方式将凭据传递到网络驱动器以进行连接。我尝试使用NetworkCredential,这似乎是人们在研究此问题时在网上尝试过的方法。我使用“摘要”代替了基本身份验证。我尝试映射一个单独的驱动器,但是它仍然需要身份验证。我当时正在考虑将脚本放入Windows启动文件夹中,该脚本将删除并重新创建带有凭据的映射。但是如果另一个用户使用相同的X:\驱动器或w / e字母该怎么办。然后它将被删除。

编辑:或者我必须向登录的任何用户提供凭据?

string sourcePath = @"\\networkDrive\something\something else"; //Source of files

NetworkCredential theNetworkCredential = new NetworkCredential(@"Domain\username", "password");
CredentialCache theNetCache = new CredentialCache();
theNetCache.Add(new Uri(@"\\networkDrive"), "Basic", theNetworkCredential);


if (System.IO.Directory.Exists(sourcePath))
{
    //...
}
else //Always hits here
{
  var errorMessage = "The Source Path " + sourcePath + " Does Not Exist!"; 
  errorList.Add(errorMessage);
}

0 个答案:

没有答案