共有フォルダパスの取得には、NetShareEnum()関数を使用します。第二引数に502を指定する事で、共有フォルダのパスを取得できます。
#include <tchar.h>
#include <iostream>
#include <windows.h>
#include <lm.h>
// lib
#pragma comment( lib, "Netapi32.lib" )
/*
指定したコンピュータの共有フォルダパスの取得
*/
int _tmain
(
int argc
, _TCHAR* argv[]
)
{
// 標準出力にユニコードを表示できるようにする
setlocale( LC_ALL, "Japanese" );
// 共有フォルダのパスを列挙したいコンピュータ名
std::wstring strComputername = L"COMPUTER-NAME";
/*
共有名と、共有パスの列挙
*/
{
SHARE_INFO_502* pBuffer = NULL;
DWORD dwEntryCount = 0;
DWORD dwTotalEntries = 0;
// 共有フォルダの列挙
NET_API_STATUS resNetApiStatus = ::NetShareEnum(
(LPWSTR)strComputername.c_str()
, 502
, (LPBYTE*)&pBuffer
, MAX_PREFERRED_LENGTH
, &dwEntryCount
, &dwTotalEntries
, NULL
);
SHARE_INFO_502* pShareInfo = (SHARE_INFO_502*)pBuffer;
// 共有フォルダ名称とパスの表示
for ( DWORD nI = 0; nI < dwEntryCount; nI++, pShareInfo++ ) {
std::wcout << pShareInfo->shi502_netname << L" => "<< pShareInfo->shi502_path << std::endl;
}
// バッファの解放
if ( NULL != pBuffer ) {
::NetApiBufferFree( pBuffer );
}
}
return 0;
}
#if 0
#endif
ADMIN$ => C:\WINDOWS C$ => C:\ share => C:\test\share テスト => C:\test\test