작업 그룹명 얻어오기

@codemaru · March 10, 2006 · 1 min read

윈도우즈의 작업 그룹명을 얻어옵니다...

#include <lm.h>

#pragma comment (lib,"netapi32.lib")

typedef NET_API_STATUS (WINAPI *FNetWkstaGetInfo)(LPWSTR, DWORD, LPBYTE *);
typedef NET_API_STATUS (WINAPI *FNetApiBufferFree)(LPVOID);

BOOL GetWorkGroupName(LPTSTR lpszGroupName, UINT iLen)
{
    BOOL bRet = FALSE; memset(lpszGroupName, 0, iLen);

    //NT
    if (GetVersion() < 0x80000000)
    {
        HINSTANCE hDll = NULL;
        BOOL bLoad = FALSE;
        FNetWkstaGetInfo fnNetWkstaGetInfo = NULL;
        FNetApiBufferFree fnNetApiBufferFree = NULL;
        bLoad = GetProcAddresses( &hDll
                , "netapi32.dll"
                , 2
                , &fnNetWkstaGetInfo
                , "NetWkstaGetInfo"
                , &fnNetApiBufferFree
                , "NetApiBufferFree");
        if (bLoad == TRUE)
        {
            WKSTA_INFO_102 *pBuf = NULL;
            NET_API_STATUS nStatus;
            nStatus = fnNetWkstaGetInfo(NULL, 102, (LPBYTE *) & pBuf);
            if (nStatus == NERR_Success)
            {
                wcstombs(lpszGroupName, (PCWSTR)pBuf->wki102_langroup, iLen);
                bRet = TRUE;
            }
            if (pBuf != NULL)
                fnNetApiBufferFree(pBuf);
            FreeLibrary(hDll);
        }
    }
    // 9X
    else
    {
        HKEY hKey;
        DWORD dwType = REG_SZ;
        DWORD dwSize = iLen;
        LONG lRet;
        lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE
                , "System\\CurrentControlSet\\Services\\VxD\\VNETSUP"
                , 0
                , KEY_READ
                , &hKey);
        if (lRet == ERROR_SUCCESS)
        {
            lRet = RegQueryValueEx( hKey
                    , "Workgroup"
                    , 0
                    , &dwType
                    , (LPBYTE) lpszGroupName
                    , &dwSize);
            bRet = (lRet == ERROR_SUCCESS);
            RegCloseKey(hKey);
        }
    }
    return bRet;
}
@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중