得到操作系统版本号

来源:互联网 发布:局域网网盘软件 编辑:程序博客网 时间:2024/06/16 16:06
//**************************************************************************//*//*          //*        //*文件说明://*         获取系统内核版本//**************************************************************************#include "InitWindowsVersion.h"/************************************************************************* 函数名称:GetWindowsVersion* 功能描述:* 参数列表:      无* 返回 值:WIN_VER_DETAIL 枚举类型,返回操作系统类型*************************************************************************/ WIN_VER_DETAIL GetWindowsVersion(){UNICODE_STRING ustrFuncName = { 0 }; RTL_OSVERSIONINFOEXW osverinfo = { sizeof(osverinfo) }; PFN_RtlGetVersion pfnRtlGetVersion = NULL;if (WinVersion)return WinVersion;RtlInitUnicodeString(&ustrFuncName, L"RtlGetVersion"); pfnRtlGetVersion = MmGetSystemRoutineAddress(&ustrFuncName);  //The MmGetSystemRoutineAddress routine returns a pointer to a function specified by SystemRoutineName. if (pfnRtlGetVersion){ pfnRtlGetVersion((PRTL_OSVERSIONINFOW)&osverinfo); } else {PsGetVersion(&osverinfo.dwMajorVersion, &osverinfo.dwMinorVersion, &osverinfo.dwBuildNumber, NULL);}// KdPrint(("[xxxxxxxx] OSVersion NT %d.%d:%d sp%d.%d\n", // osverinfo.dwMajorVersion, osverinfo.dwMinorVersion, osverinfo.dwBuildNumber, // osverinfo.wServicePackMajor, osverinfo.wServicePackMinor));if (osverinfo.dwMajorVersion == 5 && osverinfo.dwMinorVersion == 0) {WinVersion = WINDOWS_VERSION_2K;} else if (osverinfo.dwMajorVersion == 5 && osverinfo.dwMinorVersion == 1) {WinVersion = WINDOWS_VERSION_XP;} else if (osverinfo.dwMajorVersion == 5 && osverinfo.dwMinorVersion == 2) {if (osverinfo.wServicePackMajor==0) { WinVersion = WINDOWS_VERSION_2K3;} else {WinVersion = WINDOWS_VERSION_2K3_SP1_SP2;}} else if (osverinfo.dwMajorVersion == 6 && osverinfo.dwMinorVersion == 0) {WinVersion = WINDOWS_VERSION_2K3_SP1_SP2;}else if (osverinfo.dwMajorVersion == 6 && osverinfo.dwMinorVersion == 1){WinVersion = WINDOWS_VERSION_7;}return WinVersion;}


 

InitWindowsVersion.h

#ifndef _SYSTEM_H#define _SYSTEM_H#include "ntifs.h"typedef enum WIN_VER_DETAIL {WINDOWS_VERSION_NONE,       //  0WINDOWS_VERSION_2K,WINDOWS_VERSION_XP,WINDOWS_VERSION_2K3,WINDOWS_VERSION_2K3_SP1_SP2,WINDOWS_VERSION_VISTA_2008,WINDOWS_VERSION_7} WIN_VER_DETAIL;WIN_VER_DETAIL WinVersion;typedef NTSTATUS (NTAPI * PFN_RtlGetVersion)(OUT PRTL_OSVERSIONINFOW lpVersionInformation); WIN_VER_DETAIL GetWindowsVersion();#endif


 

原创粉丝点击