牛骨文教育服务平台(让学习变的简单)
博文笔记

WindowsAPI获取主机操作系统信息

创建时间:2017-07-13 投稿人: 浏览次数:548
VOID SafeGetNativeSystemInfo(__out LPSYSTEM_INFO lpSystemInfo)  
{  
    if (NULL==lpSystemInfo) return;  
    typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);  
    LPFN_GetNativeSystemInfo fnGetNativeSystemInfo = (LPFN_GetNativeSystemInfo)GetProcAddress( GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo");;  
    if (NULL != fnGetNativeSystemInfo)  
    {  
        fnGetNativeSystemInfo(lpSystemInfo);  
    }  
    else  
    {  
        GetSystemInfo(lpSystemInfo);  
    }  
}  
// 获取操作系统位数 
int GetSystemBits()    
{    
    SYSTEM_INFO si;    
    SafeGetNativeSystemInfo(&si);    
    if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||    
        si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )    
    {    
        return 64;    
    }    
    return 32;    
}    
//获取操作系统版本
char *GetVersionInfo()  
{  

    OSVERSIONINFO osvi;  
    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));  
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);  
    if (!GetVersionEx(&osvi)) {  
        return NULL;  
    }  

    //判断版本  
    if (osvi.dwMajorVersion == 5) {  

        switch (osvi.dwMinorVersion) {  
        case 0:  
            return "Windows 2000";  
        case 1:  
            return "Windows XP";  
        case 2:  
            return "Windows Server 2003";  
        default:  
            return "Unknown System";  
        }  

    }else if (osvi.dwMajorVersion == 6) {  

        switch (osvi.dwMinorVersion) {  
        case 0:  
            return "Windows Vista";  
        case 1:  
            return "Windows 7";  
        case 2:  
            return "Windows 8";  
        default:  
            return "Unknown System";  
        }  

    }else {  
        return "Unknown System";  
    }  
}
//获取进程列表
void GetProcessList(){
 HANDLE pHandle;
 PROCESSENTRY32 proc;
 DWORD procId;
 char szLogBuffer[512]={0};

 pHandle = CreateToolhelp32Snapshot(0x2,0x0);
 if(pHandle==INVALID_HANDLE_VALUE){
  return;
 }
 proc.dwSize = sizeof(PROCESSENTRY32);
 while(Process32Next(pHandle,&proc)){
     printf("ProcessName : %S
",proc.szExeFile);
 }
 CloseHandle(pHandle);
 return;
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。