使用用户名和密码连接到networking驱动器

如何提供证书,以便我可以连接到NET中的networking驱动器?

我试图从networking驱动器检索文件,并需要提供用户凭据来访问驱动器。

最好的办法是调用WNetUseConnection 。

[StructLayout(LayoutKind.Sequential)] private class NETRESOURCE { public int dwScope = 0; public int dwType = 0; public int dwDisplayType = 0; public int dwUsage = 0; public string lpLocalName = ""; public string lpRemoteName = ""; public string lpComment = ""; public string lpProvider = ""; } [DllImport("Mpr.dll")] private static extern int WNetUseConnection( IntPtr hwndOwner, NETRESOURCE lpNetResource, string lpPassword, string lpUserID, int dwFlags, string lpAccessName, string lpBufferSize, string lpResult ); 

示例代码在这里 。

来自http://social.msdn.microsoft.com/Forums/vstudio/en-US/287ca606-86da-4794-baed-2ad5db9bc833/access-to-remote-folder的非常优雅的解决scheme。; 这个只使用.Net库,不需要使用任何命令行或Win32 API。

可供参考的代码:

 NetworkCredential theNetworkCredential = new NetworkCredential(@"domain\username", "password"); CredentialCache theNetCache = new CredentialCache(); theNetCache.Add(new Uri(@"\\computer"), "Basic", theNetworkCredential); string[] theFolders = Directory.GetDirectories(@"\\computer\share"); 

您可以使用WindowsIdentity类(使用login令牌 )在读取和写入文件时进行模拟。

 var windowsIdentity = new WindowsIdentity(logonToken); using (var impersonationContext = windowsIdentity.Impersonate()) { // Connect, read, write } 

你可以使用system.diagnostocs.process来调用'net use …. with userid and password'或者一个带有这些的shell。

您可以使用WebClient类使用凭据连接到networking驱动程序。 包括下面的命名空间:

 using System.Net; WebClient request = new WebClient(); request.Credentials = new NetworkCredential("domain\username", "password"); string[] theFolders = Directory.GetDirectories(@"\\computer\share");