第一种:建立磁盘映射方式 WNetAddConnection2A
通过WNetAddConnection2A
API将共享目录映射为本地磁盘,之后即可按本地文件形式访问文件,最后断开连接。
调试的过程中,开始经常返回1219,很是无奈,后来测试第二种方法后再回头测试此方法时却再没出现1219错误,很是无奈,感觉像是打通了任督二脉,也不知道啥原因。
第二种:使用net
use命令
后台调用cmd运行“net
use \\path /User:user password /PERSISTENT:YES”命令,获取共享目录的权限,即可访问共享目录下的文件了。
事实上,都是为了通过账号密码获取权限。
第一中方法代码:WNetAddConnection2A
namespace test
{
public enum
ERROR_ID
{
ERROR_SUCCESS = 0, //
Success
ERROR_BUSY = 170,
ERROR_MORE_DATA = 234,
ERROR_NO_BROWSER_SERVERS_FOUND =
6118,
ERROR_INVALID_LEVEL = 124,
ERROR_ACCESS_DENIED = 5,
ERROR_INVALID_PASSWORD = 86,
ERROR_INVALID_PARAMETER = 87,
ERROR_BAD_DEV_TYPE = 66,
ERROR_NOT_ENOUGH_MEMORY = 8,
ERROR_NETWORK_BUSY = 54,
ERROR_BAD_NETPATH = 53,
ERROR_NO_NETWORK = 1222,
ERROR_INVALID_HANDLE_STATE = 1609,
ERROR_EXTENDED_ERROR = 1208,
ERROR_DEVICE_ALREADY_REMEMBERED =
1202,
ERROR_NO_NET_OR_BAD_PATH = 1203,
ERROR_SESSION_CREDENTIAL_CONFLICT = 1219
//资源管理器中已经打开了该目录
}
public enum
RESOURCE_SCOPE
{
RESOURCE_CONNECTED = 1,
RESOURCE_GLOBALNET = 2,
RESOURCE_REMEMBERED = 3,
RESOURCE_RECENT = 4,
RESOURCE_CONTEXT = 5
}
public enum
RESOURCE_TYPE
{
RESOURCETYPE_ANY = 0,
RESOURCETYPE_DISK = 1,
RESOURCETYPE_PRINT = 2,
RESOURCETYPE_RESERVED = 8,
}
public enum
RESOURCE_USAGE
{
RESOURCEUSAGE_CONNECTABLE = 1,
RESOURCEUSAGE_CONTAINER = 2,
RESOURCEUSAGE_NOLOCALDEVICE = 4,
RESOURCEUSAGE_SIBLING