C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[96] 자신 컴의 작업그룹(WorkGroup)명 얻기 (98계열과 nt계열 몽땅)
이영수 [isclick] 7501 읽음    2001-06-14 17:09
안녕하세염..이영수 입니다. 경호님의 덕분에 자신의 작업그룹명 얻기를 구현 했습니다.
다시 한번 경호님께 감사 드립니다. 구체적인건 죽 훌터 보면 대충 아실거 같고염..
세부적인건 저도 잘 모릅니다. 키키..
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);
}

+ -

관련 글 리스트
96 자신 컴의 작업그룹(WorkGroup)명 얻기 (98계열과 nt계열 몽땅) 이영수 7501 2001/06/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.