C++访问一个带密码的共享文件夹的方法

来源:互联网 发布:h5页面打开淘宝app 编辑:程序博客网 时间:2024/05/18 01:56

首先先说明,方法是根据51CTO论坛的回答得出的,具体网址是:http://bbs.51cto.com/thread-910854-1.html  标题:编写一个带密码的访问共享文件夹的小工具


1、使用 Net use 取得与服务器的连接即可

system("net use \\\\192.168.1.100\\ck\\a b /user:a"); 

接着就能访问共享文件夹了。

2、像 @紫色枫叶 那样使用 WNetAddConnection2(LPNETRESOURCE lpnetresource,LPCTSTR lpPassword,LPCTSTR lpUsername,DWORD dwFlags) 函数,其中可不用映射盘符,具体参数定义参见MSDN。
example:

#ifndef UNICODE        #define UNICODE#endif#ifdef UNICODE        #ifndef _UNICODE                #define _UNICODE        #endif#endif#include <Windows.h>#include <tchar.h>#include <WinNetWk.h>#include <stdio.h>#pragma comment(lib, "Mpr.lib")int _tmain(int argc, TCHAR **argv){            TCHAR szPasswd[] = TEXT("****");          //共享资源授权用户的密码    TCHAR szUserName[] = TEXT("**");        //共享资源授权的用户    NETRESOURCE net_Resource;    net_Resource.dwDisplayType = RESOURCEDISPLAYTYPE_DIRECTORY;    net_Resource.dwScope = RESOURCE_CONNECTED;    net_Resource.dwType = RESOURCETYPE_ANY;    net_Resource.dwUsage = 0;    net_Resource.lpComment = TEXT("");    net_Resource.lpLocalName = TEXT("z:");  //映射成本地驱动器z:    net_Resource.lpProvider= NULL;    net_Resource.lpRemoteName = TEXT("\\\\192.168.0.2\\管理部"); // \\servername\共享资源名    DWORD dwFlags = CONNECT_UPDATE_PROFILE;    DWORD dw = WNetAddConnection2(&net_Resource, szPasswd, szUserName, dwFlags);    switch(dw)    {        case ERROR_SUCCESS:            ShellExecute(NULL, TEXT("open"), TEXT("z:"), NULL, NULL, SW_SHOWNORMAL);            break;        case ERROR_ACCESS_DENIED:            wprintf(TEXT("没有权访问!"));                break;        case ERROR_ALREADY_ASSIGNED:            ShellExecute(NULL, TEXT("open"), TEXT("z:"), NULL, NULL, SW_SHOWNORMAL);            break;        case ERROR_INVALID_ADDRESS:            wprintf(TEXT("IP地址无效"));            break;        case ERROR_NO_NETWORK:            wprintf(TEXT("网络不可达!"));            break;    }    return 0;


原创粉丝点击