在我的公司,我正在使用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" ?如果是这样,这不是我想要的。