안녕하세염..이영수 입니다. 경호님의 덕분에 자신의 작업그룹명 얻기를 구현 했습니다.
다시 한번 경호님께 감사 드립니다. 구체적인건 죽 훌터 보면 대충 아실거 같고염..
세부적인건 저도 잘 모릅니다. 키키..
GetWorkGroupName() 함수가 os버전 체크해서 적절한 함수를 호출하죠..
//---------------------------------------------------------------------------
// WorkGroup명 얻기(98용)
//
//
String GetServerInfo98(void)
{
String sRtn;
TRegistry* Reg = new TRegistry;
Reg->RootKey = HKEY_LOCAL_MACHINE;
Reg->OpenKey("\\System\\CurrentControlSet\\Services\\VxD\\VNETSUP", false);
sRtn = Reg->ReadString("WorkGroup");
Reg->CloseKey();
Reg->Free();
return sRtn;
}
//---------------------------------------------------------------------------
// Group Name 구하기
//
//
String GetWorkGroupName()
{
String sWorkGroup;
OSVERSIONINFO info;
info.dwOSVersionInfoSize = sizeof(info);
GetVersionEx(&info);
if (info.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
PSERVER_INFO_503 si503; // Server info structure
HINSTANCE HWorkGroup;
PSERVER_INFO_503 (__stdcall *GetServerInfoNT)();
HWorkGroup = LoadLibrary((sEXE_PATH + "WorkGroup.dll").c_str());
GetServerInfoNT = (PSERVER_INFO_503 (__stdcall *)())
GetProcAddress(HWorkGroup, "GetServerInfoNT"); // BinGoGame Dll 초기화
si503 = GetServerInfoNT();
sWorkGroup = si503->sv503_domain;
FreeLibrary(GetServerInfoNT);
}
else
sWorkGroup = GetServerInfo98();
return sWorkGroup;
}
//---------------------------------------------------------------------------
// WorkGroup명 얻기(NT용) Dll단으로 내려야함(만약 한 모듈로 98에서 실해하면 에러남)
// dll 명은 같은 폴더에 WorkGroup.dll로 했음
//
extern "C" PSERVER_INFO_503 __export __stdcall GetServerInfoNT()
{
NET_API_STATUS nasRc; // return code from NetXxxx()
LPBYTE buff;
nasRc = NetServerGetInfo(NULL,503,&buff);
if(nasRc != NERR_Success)
{
switch(nasRc)
{
case ERROR_ACCESS_DENIED: // The user does not have access to
break;
case ERROR_INVALID_LEVEL: // The value specified for the Level parameter is invalid.
case ERROR_INVALID_PARAMETER: // The specified parameter is invalid.
break;
case ERROR_NOT_ENOUGH_MEMORY: // Insufficient memory is available.
break;
}
exit(2);
}
return((PSERVER_INFO_503) buff);
}
|