ネットワークドライブを切断する

ネットワークドライブとして使われているLAN上のパソコンやNASなどから公開されているフォルダから切断するにはWNetDisconnectDialog1を利用する。

依存環境:ATL
#include <atlstr.h>
#pragma	comment(lib,"Mpr.lib")



//
//	ネットワークドライブの切断
//
//bDisconnectKeepはfalseだとWindowsを再起動すると接続が回復する
//
bool	NetDriveDisconnect(LPCTSTR pszLocalName,LPCTSTR pszRemoteName,bool bDisconnectKeep=false)
{
	DWORD			dwRet;
	DISCDLGSTRUCT	sDiscdlgStruct;
	CAtlStringA		strLocal;
	CAtlStringA		strRemote;

	strLocal	= pszLocalName;
	strRemote	= pszRemoteName;

	//pszLocalNameは「z:」のようにする。末尾は「:」にする
	if(strLocal.Right(1) != ':')
		strLocal += ":";

	//	pszRemoteNameは「\\\\192.168.11.151\\share」のようにする。末尾を「\\」にするのはNG
	if(strRemote.Right(1) == '\\')
		strRemote = strRemote.Left(strRemote.GetLength() - 1);

	ZeroMemory(&sDiscdlgStruct,sizeof(DISCDLGSTRUCT));
	sDiscdlgStruct.cbStructure	= sizeof(DISCDLGSTRUCT);
	sDiscdlgStruct.hwndOwner	= NULL;
	sDiscdlgStruct.lpLocalName	= strLocal.GetBuffer(0);
	sDiscdlgStruct.lpRemoteName	= strRemote.GetBuffer(0);
	sDiscdlgStruct.dwFlags		= (bDisconnectKeep) ? DISC_UPDATE_PROFILE | DISC_NO_FORCE : DISC_NO_FORCE;

	dwRet = ::WNetDisconnectDialog1(&sDiscdlgStruct);

	return	(dwRet == NO_ERROR) ? true : false;
}






void	Test(void)
{
	bool	ret;

	ret = NetDriveDisconnect(_T("r:"),_T("\\\\192.168.11.151\\share"));

	if(ret)
		::MessageBox(NULL,_T("切断しました"),_T(""),MB_OK);
	else
		::MessageBox(NULL,_T("失敗しました"),_T(""),MB_OK);
}

プロジェクトファイルをダウンロード


カテゴリー「ネットワーク」 のエントリー