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

首先先说明,方法是根据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 
#include 
#include 
#include 
#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;


你可能感兴趣的:(C++,共享文件夹,密码)