原帖地址:http://faq.csdn.net/read/210867.html
代码如下:(对在线的局域网上的SQL服务器)
char a[64],tempchar[64];
CString str;
PSERVER_INFO_100 pBuf;
PSERVER_INFO_100 pTmpBuf;
DWORD dwLevel = 100;
DWORD dwPrefMaxLen = -1;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwTotalCount = 0;
DWORD dwServerType = SV_TYPE_SQLSERVER;
DWORD dwResumeHandle = 0;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
DWORD i;
nStatus = NetServerEnum(NULL,
dwLevel,
(LPBYTE *) &pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries,
dwServerType,
NULL,
&dwResumeHandle);
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
{
if ((pTmpBuf = pBuf) != NULL)
{
for (i = 0; i < dwEntriesRead; i++)
{
if (pTmpBuf == NULL)
{
fprintf(stderr, "An access violation has occurred/n");
break;
}
int leng = lstrlenW((unsigned short*)pTmpBuf->sv100_name)*2;
if (leng>0)
RtlMoveMemory(a,pTmpBuf->sv100_name,leng);
memset(tempchar,0,64);
WideCharToMultiByte( 0, 0, (unsigned short*)a, -1, tempchar, leng/2, NULL, NULL );
str+=tempchar;
pTmpBuf++;
dwTotalCount++;
}
if (nStatus == ERROR_MORE_DATA)
{
fprintf(stderr, "/nMore entries available!!!/n");
fprintf(stderr, "Total entries: %d", dwTotalEntries);
}
printf("/nEntries enumerated: %d/n", dwTotalCount);
}
}
if (pBuf != NULL)
NetApiBufferFree(pBuf);