如何使用当前凭据访问unc文件夹而不在c#中输入凭据信息?

时间:2017-05-02 12:20:27

标签: c# webdav unc networkcredentials

在我的公司,我正在使用c#开发一个应用程序,我必须访问unc文件夹。我搜索了这个,但想出了需要手动输入凭据的示例。

我想要实现的是,有两个用户组(我不知道IT部门如何设置它们),其中一个用户组无法访问文件夹内容。但是可以使用包含空内容的凭据在Windows资源管理器中映射文件夹。因此,据我所知,它验证用户身份。所以,我需要确定用户是否有权访问。为此,我正在检查文件夹的内容,如果它是空的,则意味着用户如果没有,则无法访问。到目前为止,用户需要预先映射文件夹,否则程序将抛出授权异常。无论用户是否映射文件夹,我都希望能够访问当前凭证信息而不向用户提示任何窗口,因为不需要提示访问内容。

我写过类似的东西,

String pathWorkWebDav = "@\\domain@SSL\DavWWWRoot\folder";

Uri uri = new Uri(@"\\domain"); 
ICredentials credentials = CredentialCache.DefaultCredentials;
var nc = credentials.GetCredential(uri, "Basic");

但又不知道。

修改

我也试过了this,,但是得到了错误"访问路径' \ people.fev.com@SSL \ DavWWWRoot \ personal \ consulting'被拒绝。"我的代码部分如下所示;

如何解决此问题?我希望我能够很好地描述。

String pathWorkWebDav = @"domain@SSL\DavWWWRoot\folder";
IntPtr token = IntPtr.Zero;
var success = LogonUser("username", @"domain", "password",
            9, 0, ref token);
if (success)
{
   using (WindowsImpersonationContext person = new WindowsIdentity(token).Impersonate())
   {
      string[] allImgs = Directory.GetFiles(pathWorkWebDav);

      person.Undo();
      CloseHandle(token);
    }
}

我是否需要更换"用户名"和" passowrd" ?如果是这样,这不是我想要的。

0 个答案:

没有答案