// 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;
}