현재 피시의 작업그룹과 도메인을 알아내는 방법을 알아보자.
* 작업그룹 알아내기
작업그룹(workgroup) 은 netbios 에서 특정 피시를 그룹핑을 할때 사용하는 이름을 뜻한다.
자세한것은 다음 링크 참조.
http://kin.naver.com/open100/db_detail.php?d1id=1&dir_id=103&eid=kUCQ685h/QrAyvd7c/AY3lJl+CzPzJT0&qb=bmV0YmlvcyDA2773sde37A==
다음은 작업그룹의 이름을 알아내는 코드이다.
#include <lm.h>
#pragma comment (lib,"netapi32.lib")
LPSTR GetWorkGroupName(void)
{
static CHAR sGroup[256];
memset(sGroup, 0x00, 256);
if ( GetVersion() < 0x80000000)
{ // WinNT series
const DWORD dwLevel = 102;
LPSTR pszServerName = NULL;
BOOL fIsDLLLoaded = FALSE;
{
WKSTA_INFO_102 *pBuf = NULL;
NET_API_STATUS nStatus;
nStatus = NetWkstaGetInfo( pszServerName, dwLevel, (LPBYTE*)&pBuf );
if (nStatus == NERR_Success)
{
//유니코드를 스트링으로 변환
WideCharToMultiByte(CP_ACP, 0, (const unsigned short *)pBuf->wki102_langroup,
-1, (char *)sGroup, sizeof(sGroup), 0, 0);
}
if (pBuf != NULL) NetApiBufferFree(pBuf);
}
}
else
{
// 9X에서는 레지스트리에서 검색을 해야함..
LONG result;
HKEY hKey;
DWORD dwType = REG_SZ;
DWORD dwSize = 128;
result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "System\\CurrentControlSet\\Services\\VxD\\VNETSUP",
0, KEY_READ, &hKey);
if (result == ERROR_SUCCESS)
{
result = RegQueryValueEx(hKey, "Workgroup", 0, &dwType, (LPBYTE)sGroup, &dwSize);
}
hKey = NULL;
RegCloseKey(hKey);
// int nLen = min(*pdwSize,_tcslen(szTempGroupName));
// _tcsncpy( szGroupName, szTempGroupName, nLen );
// szGroupName[nLen] = 0;
// *pdwSize = nLen;
}
return sGroup;
}