共有フォルダパスの取得には、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