使用NetShareEnum()函数获得机器上的共享资源。
nas = ::NetShareEnum(_ipaddress, 502, (LPBYTE *)&pSi502Out,
MAX_PREFERRED_LENGTH, &er, &tr, &resume);
当_ipaddress是本机的时候可以正确的获得共享资源,但为其他机器的时候就会返回ERROR_ACCESS_DENIED这个错误
有哪位朋友遇到过相似的问题吗?
nas = ::NetShareEnum(_ipaddress, 502, (LPBYTE *)&pSi502Out,
MAX_PREFERRED_LENGTH, &er, &tr, &resume);
当_ipaddress是本机的时候可以正确的获得共享资源,但为其他机器的时候就会返回ERROR_ACCESS_DENIED这个错误
有哪位朋友遇到过相似的问题吗?
BYTE nField0;
BYTE nField1;
BYTE nField2;
BYTE nField3; m_ipAddress.GetAddress(nField0,nField1,nField2,nField3);
_ipaddress.Format(_T("%d.%d.%d.%d"), nField0,nField1,nField2,nField3);
//获得共享文件夹
PSHARE_INFO_502 pSi502, pSi502Out;
NET_API_STATUS nas;
DWORD er = 0, tr = 0, resume = 0, j = 0;
int tmpBreak = 0, i = 0, itPos = 0;
_siNum = 0; do
{
nas = ::NetShareEnum(_ipaddress, 502, (LPBYTE *)&pSi502Out,
MAX_PREFERRED_LENGTH, &er, &tr, &resume);
if(nas == ERROR_SUCCESS || nas == ERROR_MORE_DATA)
{
pSi502 = pSi502Out;
for(j=0; j<er; j++)
{
if (_siNum > 100)
{
MessageBox(_T("空间不足"), _T("SHARE_INFO_502 list fail"), MB_OK);
tmpBreak = 1;
break;
}
tmpBreak = 0;
_siInfo[_siNum].currentUses = pSi502->shi502_current_uses;
_siInfo[_siNum].maxUses = pSi502->shi502_max_uses;
_siInfo[_siNum].name = pSi502->shi502_netname;
_siInfo[_siNum].passwd = pSi502->shi502_passwd;
_siInfo[_siNum].path = pSi502->shi502_path;
_siInfo[_siNum].permissions = pSi502->shi502_permissions;
_siInfo[_siNum].re = pSi502->shi502_re;
_siInfo[_siNum].type = pSi502->shi502_type; _siNum++;
pSi502++;
}
NetApiBufferFree(pSi502Out);
}
else
{
MessageBox(_T(" "), _T("NetShareEnum fail"), MB_OK);
LogOn();
}
if (1 == tmpBreak)
{
break;
}
}
while (nas == ERROR_MORE_DATA);