c++ 操做共享文件, WnetAddConnection2是windows網絡函數 可實現網絡驅動器的映射和斷開

在Microsoft Windows環境下,應用程序使用Windows網絡函數(WNet)來實現網絡功能而不用關心網絡的供應商及具體實現。由於WNet函數是獨立於網絡的。ios

Wnet函數主要有:WnetAddConnection , WnetAddConnection2 , WnetAddConnection3 , WnetCancelConnection2等。本文主要用WnetAddConnection2,WnetCancelConnection2函數,關於WNet函數更詳細的資料請參考Delphi的連機文檔和Microsoft API函數說。windows

下面直接上代碼:我共享的文件夾是測試文件夾 zzz文件夾網絡

#include <windows.h>
#include <tchar.h>
#include <WinNetWk.h>
#include <stdio.h>
#include <string>
#include <iostream>
#pragma comment(lib, "Mpr.lib")ide

int _tmain(int argc, _TCHAR* argv[])
{
    string szPasswd = "2wsx.3edc" , szUserName =  "test_zh"; //用戶名和密碼
    NETRESOURCE net_Resource;
    memset(&net_Resource, 0, sizeof(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.199.198\\zzz"); // \\servername\共享資源名
    DWORD dwFlags = CONNECT_UPDATE_PROFILE;
    DWORD dw = WNetAddConnection2(&net_Resource, szPasswd.c_str(), szUserName.c_str(), dwFlags);
    if(dw == ERROR_ALREADY_ASSIGNED){
    return -1;
    }
    else if(dw == ERROR_DEVICE_ALREADY_REMEMBERED){
        return -1;
    }
    else if(dw != NO_ERROR){
        return -1;
    }
    else if (dw == ERROR_SUCCESS)
    {
        //這裏能夠像操做本地磁盤同樣操做文件了,上面映射爲Z盤,就以寫文件爲例
        FILE *f = fopen("Z:\\123.txt", "w");
        if (f != NULL)
        {
            fwrite("12313", 5, 1, f);
            fclose(f);
        }
        Sleep(100);
        //斷開共享鏈接
        DWORD dwConFlig = WNetCancelConnection2(net_Resource.lpLocalName, CONNECT_UPDATE_PROFILE, true);
        if (dwConFlig != ERROR_SUCCESS)
        {
            return -1;
        }
    }
    return 0;
函數

有不足的地方但願你們給出建議我會驗證更新,一塊兒學習。學習

相關文章
相關標籤/搜索