想访问网上邻居,路径是"\\192.168.0.22\Mydata".
例如:
File.Copy(@"\\192.168.0.22\Mydata\test.txt", desFilePath);
由于访问\\192.168.0.22\Mydata需要用户名和密码,所以执行上述代码的时候目标路径拒绝访问。
请问如何在代码中输入用户名和密码。
例如:
File.Copy(@"\\192.168.0.22\Mydata\test.txt", desFilePath);
由于访问\\192.168.0.22\Mydata需要用户名和密码,所以执行上述代码的时候目标路径拒绝访问。
请问如何在代码中输入用户名和密码。
解决方案 »
- C#怎样在英文Windows上,创建中文快捷方式?
- C#操作XML文件
- 在css文件中,有些地方是在名称前加 . ,有些地方是加 # ,各自是什么意思啊? 请前辈指点!
- 实体初始化方式 new Class().Function();
- C#如何判断客户端是否安装了Adobe Reader 软件啊?
- 怎样判断文本框中的SQL语句语法是否正确?
- 请问有谁用C#完整地开发了一个ERP比较大型的软件系统
- 为什么控件不可用了
- 做个局域网游戏,服务器用TCPlistener,客户端用Socket,当服务器连续向客户端发送数据时,客户端响应不过来,怎么解决?
- 验证组件的问题:ControlToValidate
- GridView下 单独赋值 相应按钮对应相应的TextBox
- 硬盘数据恢复
这个链接是delphi版的,你可以参考用到的几个方法
大致应该是这样,你可以先在 explorer 里试一下
{
NetResource nr;
nr.dwDisplayType = ResourceDisplayType.RESOURCEDISPLAYTYPE_GENERIC;
nr.dwScope = ResourceEnumerationScope.RESOURCE_GLOBALNET;
nr.dwType = ResourceType.RESOURCETYPE_DISK;
nr.dwUsage = ResourceUsage.RESOURCEUSAGE_CONNECTABLE;
nr.lpComment = " ";
nr.lpLocalName = "X: ";
nr.lpProvider = " ";
nr.lpRemoteName = remoteName; if (CopyFileByNet.WNetAddConnection2(ref nr, "pwd", "usrName", ConnectionOption.CONNECT_INTERACTIVE) == WNetAddConnection2ReturnCode.NO_ERROR)
{
logger.Debug("mapped succeed ");
}
else
{
logger.Debug("mapped failure ");
} if (CopyFileByNet.WNetCancelConnection2("X: ", 0, true) == WNetCancelConnection2ReturnCode.NO_ERROR)
{
logger.Debug("cancel succeed ");
}
else
{
logger.Debug("cancel error ");
}
} public class CopyFileByNet
{
public CopyFileByNet()
{
//
// TODO:
//
} //declare WindowsNetwork function
//cancel net mapped
[DllImport("mpr.dll ")]
public static extern WNetCancelConnection2ReturnCode WNetCancelConnection2(
string strResourceName,
ConnectionType connectionType,
bool bForce
);
//builde net mapped
[DllImport("mpr.dll ")]
public static extern WNetAddConnection2ReturnCode WNetAddConnection2(
ref NetResource netResource,
string strPassword,
string strUserName,
ConnectionOption dwFlags
);
} //ConnectionType
public enum ConnectionType
{
CONNECT_DONT_UPDATE_PROFILE = 0,
CONNECT_UPDATE_PROFILE = 0x00000001,
CONNECT_UPDATE_RECENT = 0x00000002,
CONNECT_TEMPORARY = 0x00000004,
CONNECT_INTERACTIVE = 0x00000008,
CONNECT_PROMPT = 0x00000010,
CONNECT_NEED_DRIVE = 0x00000020,
CONNECT_REFCOUNT = 0x00000040,
CONNECT_REDIRECT = 0x00000080,
CONNECT_LOCALDRIVE = 0x00000100,
CONNECT_CURRENT_MEDIA = 0x00000200,
CONNECT_DEFERRED = 0x00000400,
CONNECT_RESERVED = unchecked((int)0xFF000000)
} //WNetCancelConnection2
public enum WNetCancelConnection2ReturnCode
{
NO_ERROR = 0,
ERROR_BAD_PROFILE = 1206,
ERROR_CANNOT_OPEN_PROFILE = 1205,
ERROR_DEVICE_IN_USE = 2404,
ERROR_EXTENDED_ERROR = 1208,
ERROR_NOT_CONNECTED = 2250,
ERROR_OPEN_FILES = 2401
} //WNetAddConnection2
public enum WNetAddConnection2ReturnCode
{
NO_ERROR = 0,
ERROR_ACCESS_DENIED = 5,
ERROR_ALREADY_ASSIGNED = 85,
ERROR_BAD_DEV_TYPE = 66,
ERROR_BAD_DEVICE = 1200,
ERROR_BAD_NET_NAME = 67,
ERROR_BAD_PROFILE = 1206,
ERROR_BAD_PROVIDER = 1204,
ERROR_BUSY = 170,
ERROR_CANCELLED = 1223,
ERROR_CANNOT_OPEN_PROFILE = 1205,
ERROR_DEVICE_ALREADY_REMEMBERED = 1202,
ERROR_EXTENDED_ERROR = 1208,
ERROR_INVALID_PASSWORD = 86,
ERROR_NO_NET_OR_BAD_PATH = 1203,
ERROR_NO_NETWORK = 1222
}
//NETRESOURCE struc:
public struct NetResource
{
public ResourceEnumerationScope dwScope;
public ResourceType dwType;
public ResourceDisplayType dwDisplayType;
public ResourceUsage dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
} //ResourceType enum:
public enum ResourceType
{
RESOURCETYPE_ANY = 0x00000000,
RESOURCETYPE_DISK = 0x00000001,
RESOURCETYPE_PRINT = 0x00000002
} //ResourceDisplayType enum:
public enum ResourceDisplayType
{
RESOURCEDISPLAYTYPE_DOMAIN = 0x00000001, RESOURCEDISPLAYTYPE_SERVER = 0x00000002, RESOURCEDISPLAYTYPE_SHARE = 0x00000003, RESOURCEDISPLAYTYPE_GENERIC = 0x00000000
} //ResourceUsage enum:
public enum ResourceUsage
{
RESOURCEUSAGE_CONNECTABLE = 0x00000001,
RESOURCEUSAGE_CONTAINER = 0x00000002
} public enum ResourceEnumerationScope
{
RESOURCE_CONNECTED = 0x00000001, /*Enumerate currently connected resources. The dwUsage member cannot be specified. */
RESOURCE_GLOBALNET = 0x00000002, /*Enumerate all resources on the network. The dwUsage member is specified. */
RESOURCE_REMEMBERED = 0x00000003 /*Enumerate remembered (persistent) connections. The dwUsage member cannot be specified. */
} //ConnectionOption enum:
public enum ConnectionOption
{
CONNECT_INTERACTIVE = 0x00000008,
CONNECT_PROMPT = 0x00000010,
CONNECT_REDIRECT = 0x00000080,
CONNECT_UPDATE_PROFILE = 0x00000001,
CONNECT_COMMANDLINE = 0x00000800,
CONNECT_CMD_SAVECRED = 0x00001000
} 我是这样做的,但是不行,执行 AccessFile(string remoteName) 方法里CopyFileByNet.WNetAddConnection2(ref nr, "pwd", "usrName", ConnectionOption.CONNECT_INTERACTIVE)的不成功
2,WnetAddConnection2 API