关于网友提出的“ 一个不太懂的问题。有兴趣的进来看看。在线等解决”问题疑问,本网通过在网上对“ 一个不太懂的问题。有兴趣的进来看看。在线等解决”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 一个不太懂的问题。有兴趣的进来看看。在线等解决描述:
访问服务器的文件夹。例如192.168.0.6\Test文件夹(只是打个比方。地址随便写的)。
需要通过登录,才有权限查看。
此时我想用代码去访问时,自动完成登录。我不知道能不能实现。本人是C#
是否有哪位大侠知道怎么去处理呢?或者在代码方面是没有办法的?
解决方案1:
代码可以参考
using System.Reflection;
using System.Runtime.InteropServices;
using System.ComponentModel;
public class YourClass {
[DllImport("mpr.dll")]
private static extern int WNetAddConnection2A(ref NetResource pstNetRes, string psPassword, string psUsername, int piFlags);
[DllImport("mpr.dll")]
private static extern int WNetCancelConnection2A(string psName, int piFlags, int pfForce);
[StructLayout(LayoutKind.Sequential)]
private struct NetResource {
public int iScope;
public int iType;
public int iDisplayType;
public int iUsage;
public string sLocalName;
public string sRemoteName;
public string sComment;
public string sProvider;
}
private const int RESOURCETYPE_DISK = 0x1;
private void LoginToShare(string serverName, string shareName, string user, string password) {
string destinationDirectory = string.Format(@"\\{0}\{1}", serverName, shareName);
NetResource nr = new NetResource();
nr.iScope = 2;
nr.iType = RESOURCETYPE_DISK;
nr.iDisplayType = 3;
nr.iUsage = 1;
nr.sRemoteName = destinationDirectory;
nr.sLocalName = null;
int flags = 0;
int rc = WNetAddConnection2A(ref nr, password, user, flags);
if (rc != 0) throw new Win32Exception(rc);
}
private void LogoutFromShare(string serverName, string shareName) {
string destinationDirectory = string.Format(@"\\{0}\{1}", serverName, shareName);
int flags = 0;
int rc = WNetCancelConnection2A(destinationDirectory, flags, Convert.ToInt32(false));
}