我想运行软件时知道系统是是98 的 还是2000的,或者XP的,用什么函数啊?

解决方案 »

  1.   

    OSVERSIONINFO osinfo;
    //osinfo.dwOSVersionInfoSize =sizeof(OSVERSIONINFO);
    if(GetVersionEx(&osinfo) != 0)
    {
    AfxMessageBox("Can not obtain operating system information!");
    return TRUE;
    }
    if(osinfo.dwPlatformId == VER_PLATFORM_WIN32_NT)   
    {
    AfxMessageBox("Operating system is Windows NT!");
    }
    else if(osinfo.dwPlatformId == VER_PLATFORM_WIN32s)
    {
    AfxMessageBox("Operating system is Windows 3X!");
    }
    else if(osinfo.dwPlatformId  == VER_PLATFORM_WIN32_WINDOWS)
    {
    if(osinfo.dwMinorVersion ==0) AfxMessageBox("Operating system is Windows 95!");
    else AfxMessageBox("Operating system is Windows 98!");
    }
    else 
    {
    AfxMessageBox("Can not identify the type of Operating system!");
    GetDlgItem(IDOK)->EnableWindow(FALSE);
    }
    为什么得到的总是 Can not identify the type of Operating system!错在哪里啊?
      

  2.   

    //osinfo.dwOSVersionInfoSize =sizeof(OSVERSIONINFO);
    如果去掉//,则Can not obtain operating system information,干脆不能获得信息。
      

  3.   

    typedef enum tagWin32SysType{
            Windows32s,
            WindowsNT3,
            Windows95,
            Windows98,
            WindowsME,
            WindowsNT4,
            Windows2000,
            WindowsXP
    }Win32SysType;
    //判断操作系统涵数及变量,jingzhou xu
    Win32SysType IsShellSysType()
    {
            Win32SysType  ShellType;
            DWORD winVer;
            OSVERSIONINFO *osvi;        winVer=GetVersion();
            if(winVer<0x80000000){/*NT */
                    ShellType=WindowsNT3;
                    osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO));
                    if (osvi!=NULL){
                            memset(osvi,0,sizeof(OSVERSIONINFO));
                            osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
                            GetVersionEx(osvi);
                            if(osvi->dwMajorVersion==4L)ShellType=WindowsNT4;
                            else 
    if(osvi->dwMajorVersion==5L&#38;&#38;osvi->
    dwMinorVersion==0L)ShellType=Windows2000;
                            else 
    if(osvi->dwMajorVersion==5L&#38;&#38;osvi->
    dwMinorVersion==1L)ShellType=WindowsXP;
                            free(osvi);
                    }
            }
            else if  (LOBYTE(LOWORD(winVer))<4)
                    ShellType=Windows32s;
            else{
                    ShellType=Windows95;
                    osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO));
                    if (osvi!=NULL){
                            memset(osvi,0,sizeof(OSVERSIONINFO));
                            osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
                            GetVersionEx(osvi);
                            if(osvi->dwMajorVersion==4L&#38;&#38;osvi->
                    dwMinorVersion==10L)ShellType=Windows98;
                            else 
    if(osvi->dwMajorVersion==4L&#38;&#38;osvi->
    dwMinorVersion==90L)ShellType=WindowsME;
                            free(osvi);
                    }
            }
            return ShellType;
    }