ネットワーク・リソースへの接続と切断



Windowsネットワーク・リソースへの接続と切断の方法です。

【使用するAPI】

	WNetAddConnection  : 16ビット版の接続用API(16ビット版との互換性のために提供)
	WNetAddConnection2 : 32ビット版の接続用API
	WNetAddConnection3 : 32ビット版の接続用API(WNetAddConnection2とは、パラメータが異なる)

	WNetCancelConnection  : 16ビット版の切断用API(16ビット版との互換性のために提供)
	WNetCancelConnection2 : 32ビット版の切断用API

	これらのAPIを使用するためには、以下の Header と Library が必要です。

	Header  : "winnetwk.h"
	Library : mpr.lib

【サンプル】

#include "winnetwk.h"  //ネットワーク操作のため、追加
                       //コンパイル時、mpr.lib のリンクが必要

//ネットワーク・リソースへの接続をする
void CVc_WNetAddConnectionDlg::OnButton2() 
{
	//ネットワークドライブを割り当てる
	//この関数は、16ビット版との互換性のために提供されています。
	//従って、32ビット版では、WNetAddConnection2 を使用します。
	DWORD Ret = WNetAddConnection("\\\\TEST_PC\\TEST","Password","G:");	

	//接続が成功したかをチェック
	switch(Ret){
	case NO_ERROR:
		AfxMessageBox("NO_ERROR");
		break;

	default:
		AfxMessageBox("Connection error !!");
	}
}

//ネットワーク・リソースの設定
void CVc_WNetAddConnectionDlg::OnButton3() 
{
	//ネットワーク・リソースの設定
	NETRESOURCE NetResource;
	NetResource.dwScope = RESOURCE_CONNECTED;
	NetResource.dwType = RESOURCETYPE_ANY;
	NetResource.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC;
	NetResource.dwUsage = RESOURCEUSAGE_CONNECTABLE;
	NetResource.lpLocalName = "G:";
	NetResource.lpRemoteName = "\\\\TEST_PC\\TEST";
	NetResource.lpComment = "XXXXX";
	NetResource.lpProvider = NULL;

	//接続
	DWORD Ret = WNetAddConnection2(&NetResource,"Password","Test_User",CONNECT_UPDATE_PROFILE);

	//接続が成功したかをチェック
	switch(Ret){
	case NO_ERROR:
		AfxMessageBox("NO_ERROR");
		break;

	default:
		AfxMessageBox("Connection error !!");
	}
}

void CVc_WNetAddConnectionDlg::OnButton4() 
{
	//ネットワーク・リソースの設定
	NETRESOURCE NetResource;
	NetResource.dwScope = RESOURCE_CONNECTED;
	NetResource.dwType = RESOURCETYPE_ANY;
	NetResource.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC;
	NetResource.dwUsage = RESOURCEUSAGE_CONNECTABLE;
	NetResource.lpLocalName = "G:";
	NetResource.lpRemoteName = "\\\\TEST_PC\\TEST";
	NetResource.lpComment = "XXXXX";
	NetResource.lpProvider = NULL;

	//接続(WNetAddConnection2 とは、パラメータが異なります)
	DWORD Ret = WNetAddConnection3(this->m_hWnd, &NetResource,"Password","Test_User",CONNECT_UPDATE_PROFILE);

	//接続が成功したかをチェック
	switch(Ret){
	case NO_ERROR:
		AfxMessageBox("NO_ERROR");
		break;

	default:
		AfxMessageBox("Connection error !!");
	}
}

//ネットワークを切断します。
void CVc_WNetAddConnectionDlg::OnButton5() 
{

	//切断
	//16ビット版との互換のために提供されています。
	//32ビット版では、WNetCancelConnection2 を使用して下さい。
	DWORD Ret = WNetCancelConnection("G:", FALSE);

	//切断が成功したかをチェック
	switch(Ret){
	case NO_ERROR:
		AfxMessageBox("NO_ERROR");
		break;

	default:
		AfxMessageBox(" error !!");
	}
}

//ネットワークを切断します
void CVc_WNetAddConnectionDlg::OnButton6() 
{
	//切断
	DWORD Ret = WNetCancelConnection2("G:", CONNECT_UPDATE_PROFILE, FALSE);
	
	//切断が成功したかをチェック
	switch(Ret){
	case NO_ERROR:
		AfxMessageBox("NO_ERROR");
		break;

	default:
		AfxMessageBox(" error !!");
	}	
}


[サンプル・ソース]