管理者かどうかの取得

(2003.09.18)
    // WinXP Pro   : 管理者, 制限ユーザー で正常に動作 
    // WinXP Home  : 管理者, 制限ユーザー で正常に動作 
    // Win2000 Pro : 管理者, 制限ユーザー で正常に動作 
    // Win98 SE    : 正常に動作 
    static BOOL Probe_IsUserAnAdmin()
    {
        BOOL br = FALSE;
 
        OSVERSIONINFO version;
        memset(&version, 0, sizeof(version));
        version.dwOSVersionInfoSize = sizeof(version);
        ::GetVersionEx(&version);
        if(version.dwPlatformId == VER_PLATFORM_WIN32_NT)
        {
            if(version.dwMajorVersion >= 5)
            {
                // Win2000 or later
#if 0
                br = ::IsUserAnAdmin();
#else
                CModule module;
                
                HINSTANCE hInst = module.LoadLibrary(_T("shell32.dll"));
                if (hInst == NULL)
                {
                    return TRUE;
                }
 
                typedef BOOL (*FUNC_ISUSERANADMIN)();
                FUNC_ISUSERANADMIN func = (FUNC_ISUSERANADMIN)module.GetProcAddress(_T("IsUserAnAdmin"));
                if (func == NULL)
                {
                    return TRUE;
                }
 
                br = func();
#endif
            }
        }
        else if(version.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
        {
            if((version.dwMajorVersion > 4) || ((version.dwMajorVersion == 4) && 
                (version.dwMinorVersion > 0)))
            {
                // Win98 or later
                br = TRUE;
            }
        }
 
        return br;
    }
一覧に戻る
© 2003 WAC.com All Right Reserved.