在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;
}函數
有不足的地方但願你們給出建議我會驗證更新,一塊兒學習。學習