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 <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;


發佈了16 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章