WindowsAPI获取主机操作系统信息

来源:互联网 发布:网络弱电考试题及答案 编辑:程序博客网 时间:2024/05/17 23:22
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\r\n",proc.szExeFile); } CloseHandle(pHandle); return;}