NetShareEnum NetShareEnum retrieves information about each shared resource on a server. The NetShareEnum function is obsolete. It is provided only for compatibility with LAN Manager and 16-bit versions of Windows. Win32-based applications should use the WNetEnumResource function.用WNetEnumResource看看,87应该是参数错误
DWORD totalentries;
DWORD resume;
DWORD i;
DWORD dwLevel;
PSHARE_INFO_2 pBuf;
PSHARE_INFO_2 pBuffer;
NET_API_STATUS nStatus;
LPWSTR servername="192.168.0.57"; nStatus = NetShareEnum(servername,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&entriesread,&totalentries,&resume);可是老是报错87,不知何故
NetShareEnum retrieves information about each shared resource on a server. The NetShareEnum function is obsolete. It is provided only for compatibility with LAN Manager and 16-bit versions of Windows. Win32-based applications should use the WNetEnumResource function.用WNetEnumResource看看,87应该是参数错误
每台机子建立一个共享文件,记录本机的共享目录,其他网内主机发送请求后,由其权限发出共享目录名。
然后...........用NetServerEnum 列出所有的server
再用NetFileEnum枚举出所有的共享文件。void EnumServer()
{LPSERVER_INFO_100 pServerEnum;
DWORD dwResult, dwRead, dwTotal; dwResult = ::NetServerEnum( NULL, 100,
(BYTE**) &pServerEnum,
-1, &dwRead, &dwTotal,
SV_TYPE_ALL, NULL, 0 );
if ( dwResult == NERR_Success ){
for ( DWORD i=0; i<dwRead; i++ )
m_wndListBox.AddString( CString( (LPCWSTR) pServerEnum[ i ].sv100_name ) );
}
}void PrintNetFiles(LPWSTR server)
{ resumeh = 0;
do
{
buff = NULL; rc=NetFileEnum(
(char *) server,
NULL,
NULL,
3,
(BYTE**)&buff,
2048,
&read,
&total,
&resumeh );
if ( rc != ERROR_MORE_DATA && rc != ERROR_SUCCESS )
break;
for ( i = 0, curf = buff; i < read; ++ i, ++ curf )
{
printf( "%-12S %-15S \n",
curf->fi3_username, curf->fi3_pathname
); }
if ( buff != NULL )
NetApiBufferFree( buff ); } while ( rc == ERROR_MORE_DATA ); if ( rc != ERROR_SUCCESS ) PrintError( rc );}
netbios api共享文件需要用户名和密码
DWORD WNetAddConnection2(
LPNETRESOURCE lpNetResource, // connection details
LPCTSTR lpPassword, // password
LPCTSTR lpUsername, // user name
DWORD dwFlags // connection options
);
然后再WNetOpenEnum