精华内容
下载资源
问答
  • 2021-05-26 03:49:11

    #include 

    #include 

    #include 

    int __cdecl wmain(__in int argc,__in_ecount(argc) PCWSTR argv[])

    {

    UNREFERENCED_PARAMETER(argc);

    UNREFERENCED_PARAMETER(argv);

    // XP或者更高级的版本

    if (IsWindowsXPOrGreater())

    {

    printf("XPOrGreater (XP或者更高级的版本)\n");

    }

    // XP SP1 或者更高级的版本

    if (IsWindowsXPSP1OrGreater())

    {

    printf("XPSP1OrGreater (XP SP1 或者更高级的版本)\n");

    }

    // XP SP2 或者更高级的版本

    if (IsWindowsXPSP2OrGreater())

    {

    printf("XPSP2OrGreater (XP SP2 或者更高级的版本)\n");

    }

    // XP SP3 或者更高级的版本

    if (IsWindowsXPSP3OrGreater())

    {

    printf("XPSP3OrGreater (XP SP3 或者更高级的版本)\n");

    }

    // Vista 或者更高级的版本

    if (IsWindowsVistaOrGreater())

    {

    printf("VistaOrGreater (Vista 或者更高级的版本)\n");

    }

    // Vista SP1 或者更高级的版本

    if (IsWindowsVistaSP1OrGreater())

    {

    printf("VistaSP1OrGreater(Vista SP1 或者更高级的版本)\n");

    }

    // Vista SP2 或者更高级的版本

    if (IsWindowsVistaSP2OrGreater())

    {

    printf("VistaSP2OrGreater (Vista SP2 或者更高级的版本)\n");

    }

    // Win7 或者更高级的版本

    if (IsWindows7OrGreater())

    {

    printf("Windows7OrGreater (Win7 或者更高级的版本)\n");

    }

    // Win7 SP1 或者更高级的版本

    if (IsWindows7SP1OrGreater())

    {

    printf("Windows7SP1OrGreater (Win7 SP1 或者更高级的版本)\n");

    }

    // Win8 或者更高级的版本

    if (IsWindows8OrGreater())

    {

    printf("Windows8OrGreater (Win8 或者更高级的版本)\n");

    }

    // Win8.1 或者更高级的版本

    if (IsWindows8Point1OrGreater())

    {

    printf("Windows8Point1OrGreater (Win8.1 或者更高级的版本)\n");

    }

    // Win10 或者更高级的版本

    if (IsWindows10OrGreater())

    {

    printf("Windows10OrGreater (Win10 或者更高级的版本)\n");

    }

    // 是服务器端操作系统还是客户端操作系统

    if (IsWindowsServer())

    {

    printf("Server (服务器)\n");

    }

    else

    {

    printf("Client (客户端)\n");

    }

    }

    更多相关内容
  • C++ 获取系统版本号

    2019-09-24 10:56:40
    因用到系统版本号,区别对待。 // 5.0 Windows 2000"; // 5.1 Windows XP"; // 5.2 Windows 2003"; // 6.0 Windows Vista"; // 6.1 Windows 7"; // 6.2 Windows 8"; // 6.3 Windows 8.1"; // 10.0 ...

    因用到系统版本号,区别对待。

        // 5.0 Windows 2000";
        // 5.1 Windows XP";
        // 5.2 Windows 2003";
        // 6.0 Windows Vista";
        // 6.1 Windows 7";
        // 6.2 Windows 8";
        // 6.3 Windows 8.1";
        // 10.0 Windows 10";
        //其他版本

    方法1:

    此方法是测下来 XP、win7、win10都通过的方法。

    DWORD Major,Minor,Build;
    void
    GetOSVersion1() { _asm { pushad mov ebx, fs:[0x18]; get self pointer from TEB mov eax, fs:[0x30]; get pointer to PEB / database mov ebx, [eax + 0A8h]; get OSMinorVersion mov eax, [eax + 0A4h]; get OSMajorVersion mov Minor, ebx mov Major, eax popad } Build = 0; }

    方法2:

     

    DWORD Major,Minor,Build;
    
    typedef NTSTATUS(WINAPI* _NtQueryInformationProcess)
    (_In_ HANDLE ProcessHandle, _In_ PROCESSINFOCLASS ProcessInformationClass,
        _Out_ PVOID ProcessInformation, _In_ ULONG ProcessInformationLength, _Out_opt_ PULONG ReturnLength);
    _NtQueryInformationProcess NtQueryInformationProcess_;
    
    DWORD GetProcessPEBAddress(HANDLE hProc)
    {
        PROCESS_BASIC_INFORMATION peb;
        DWORD tmp;
        NtQueryInformationProcess_ = (_NtQueryInformationProcess)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtQueryInformationProcess");
        NtQueryInformationProcess_(hProc, ProcessBasicInformation, &peb, sizeof(PROCESS_BASIC_INFORMATION), &tmp);
        return (DWORD)peb.PebBaseAddress;
    }
    
    void GetOSVersionByHandle(HANDLE handle)
    {
        DWORD pebAddress = GetProcessPEBAddress(handle);
        DWORD OSMajorVersionAddress = pebAddress + 0x0a4;
        DWORD OSMinorVersionAddress = pebAddress + 0x0a8;
        DWORD OSBuildNumberAddress = pebAddress + 0x0ac;
        ReadProcessMemory(handle, (void*)OSMajorVersionAddress, &Major, sizeof(Major), 0);
        ReadProcessMemory(handle, (void*)OSMinorVersionAddress, &Minor, sizeof(Minor), 0);
        ReadProcessMemory(handle, (void*)OSBuildNumberAddress, &Build, sizeof(Build), 0);
    }
    
    
    void GetOSVersion2()
    {
        HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
        GetOSVersionByHandle(handle);
    }

     

    方法3:

    GetVersionEx在win10版本以后,已经失效。

    DWORD Major,Minor,Build;
    
    void GetOSVersion3()
    {
        OSVERSIONINFO osvi;                    //定义OSVERSIONINFO数据结构对象
        memset(&osvi, 0, sizeof(OSVERSIONINFO));        //开空间 
        osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);    //定义大小 
        GetVersionEx(&osvi);                    //获得版本信息
    
        Major = osvi.dwMajorVersion;
        Minor = osvi.dwMinorVersion;
        Build = osvi.dwBuildNumber;
    }

     

                             

     

     编译xp的运行程序 需要设置工程的属性:

     

     

     

    转载于:https://www.cnblogs.com/Bachelor/p/11290159.html

    展开全文
  • 用windows API获取操作系统版本号 std::string GetSystemOSVersionNumber() { std::string winver; OSVERSIONINFOEX osver; SYSTEM_INFO sysInfo; typedef void(__stdcall *GETSYSTEMINFO) (LPSYSTEM_INFO); _...

    用windows API获取操作系统版本号

    std::string GetSystemOSVersionNumber()
    {
    	std::string     winver;
    	OSVERSIONINFOEX osver;
    	SYSTEM_INFO     sysInfo;
    	typedef void(__stdcall *GETSYSTEMINFO) (LPSYSTEM_INFO);
    
    	__pragma(warning(push))
    		__pragma(warning(disable:4996))
    		memset(&osver, 0, sizeof(osver));
    	osver.dwOSVersionInfoSize = sizeof(osver);
    	GetVersionEx((LPOSVERSIONINFO)&osver);
    	__pragma(warning(pop))
    		DWORD major = 0;
    	DWORD minor = 0;
    	if (GetWinMajorMinorVersion(major, minor))
    	{
    		osver.dwMajorVersion = major;
    		osver.dwMinorVersion = minor;
    	}
    	else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2)
    	{
    		OSVERSIONINFOEXW osvi;
    		ULONGLONG cm = 0;
    		cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_EQUAL);
    		ZeroMemory(&osvi, sizeof(osvi));
    		osvi.dwOSVersionInfoSize = sizeof(osvi);
    		osvi.dwMinorVersion = 3;
    		if (VerifyVersionInfoW(&osvi, VER_MINORVERSION, cm))
    		{
    			osver.dwMinorVersion = 3;
    		}
    	}
    
    	GETSYSTEMINFO getSysInfo = (GETSYSTEMINFO)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "GetNativeSystemInfo");
    	if (getSysInfo == NULL)  getSysInfo = ::GetSystemInfo;
    	getSysInfo(&sysInfo);
    
    	if (osver.dwMajorVersion == 10 && osver.dwMinorVersion >= 0 && osver.wProductType != VER_NT_WORKSTATION)  winver = "Windows 10 Server";
    	if (osver.dwMajorVersion == 10 && osver.dwMinorVersion >= 0 && osver.wProductType == VER_NT_WORKSTATION)  winver = "Windows 10";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 3 && osver.wProductType != VER_NT_WORKSTATION)  winver = "Windows Server 2012 R2";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 3 && osver.wProductType == VER_NT_WORKSTATION)  winver = "Windows 8.1";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2 && osver.wProductType != VER_NT_WORKSTATION)  winver = "Windows Server 2012";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2 && osver.wProductType == VER_NT_WORKSTATION)  winver = "Windows 8";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1 && osver.wProductType != VER_NT_WORKSTATION)  winver = "Windows Server 2008 R2";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1 && osver.wProductType == VER_NT_WORKSTATION)  winver = "Windows 7";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0 && osver.wProductType != VER_NT_WORKSTATION)  winver = "Windows Server 2008";
    	if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0 && osver.wProductType == VER_NT_WORKSTATION)  winver = "Windows Vista";
    	if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 2 && osver.wProductType == VER_NT_WORKSTATION
    		&& sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)  winver = "Windows XP x64";
    	if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 2)   winver = "Windows Server 2003";
    	if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 1)   winver = "Windows XP";
    	if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 0)   winver = "Windows 2000";
    	if (osver.dwMajorVersion < 5)   winver = "unknown";
    
    	if (osver.wServicePackMajor != 0)
    	{
    		std::string sp;
    		char buf[128] = { 0 };
    		sp = " Service Pack ";
    		sprintf_s(buf, sizeof(buf), "%hd", osver.wServicePackMajor);
    		sp.append(buf);
    		winver += sp;
    	}
    
    	return winver;
    }
    

    做个记录,防止遗忘

    展开全文
  • 获取系统版本信息

    2016-10-28 18:25:44
    获取系统版本信息的各种方法 GetVersionEx 内嵌清单 IsWindows10OrGreater GetFileVersionInfo 等等
  • C++ 获取windows系统版本号

    千次阅读 2019-07-22 09:25:58
    #include #include BOOL GetNtVersionNumbers(DWORD& dwMajorVer, DWORD& dwMinorVer,DWORD& dwBuildNumber) { BOOL bRet= FALSE; HMODULE hModNtdll= NULL;...系统版本号对应表    
    #include<Windows.h>
    #include<Stdio.h>
    
    BOOL GetNtVersionNumbers(DWORD& dwMajorVer, DWORD& dwMinorVer,DWORD& dwBuildNumber)
    {
        BOOL bRet= FALSE;
        HMODULE hModNtdll= NULL;
        if (hModNtdll= ::LoadLibraryW(L"ntdll.dll"))
        {
            typedef void (WINAPI *pfRTLGETNTVERSIONNUMBERS)(DWORD*,DWORD*, DWORD*);
            pfRTLGETNTVERSIONNUMBERS pfRtlGetNtVersionNumbers;
            pfRtlGetNtVersionNumbers = (pfRTLGETNTVERSIONNUMBERS)::GetProcAddress(hModNtdll, "RtlGetNtVersionNumbers");
            if (pfRtlGetNtVersionNumbers)
            {
               pfRtlGetNtVersionNumbers(&dwMajorVer, &dwMinorVer,&dwBuildNumber);
               dwBuildNumber&= 0x0ffff;
               bRet = TRUE;
            }
     
            ::FreeLibrary(hModNtdll);
            hModNtdll = NULL;
        }
     
        return bRet;
    }
    
    //判断是否为64位操作系统
    BOOL IsWow64()
    {
    	typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
    	LPFN_ISWOW64PROCESS fnIsWow64Process;
    	BOOL bIsWow64 = FALSE;
    	fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(_T("kernel32")), "IsWow64Process");
    	if (NULL != fnIsWow64Process)
    	{
    		fnIsWow64Process(GetCurrentProcess(), &bIsWow64);
    	}
    	return bIsWow64;
    }
    
    void main()
    {
    	DWORD dwMajorVer,dwMinorVer,dwBuildNumber;
    	if (GetNtVersionNumbers(dwMajorVer,dwMinorVer,dwBuildNumber))
    	printf("Build Version = %d.\%d.%d\n", dwMajorVer,dwMinorVer,dwBuildNumber);
    	system("Pause");
    }

    系统版本号对应表

     

     

    展开全文
  • 博客名称 : 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/102933704
  • 内容索引:VC/C++源码,系统相关,版本号 VC++获取Windows操作系统版本号和运行模式,因变量设置不同,这里检测到XP系统是Windows NT,其它参数都正常,包括补丁版本、内部版本号等。其实本程序个人觉得没什么实用性...
  • c++写的获取系统版本号的程序

    热门讨论 2010-12-15 10:31:02
    c++写的获取系统版本号的程序,可以获取主版本和副版本号。
  • 主要用到的windowsAPI为GetVersion()函数 代码 #define WIN10_VERSION 1 ...//获取当前系统版本 DWORD getCurrentSystemVersion() { DWORD dwVersion = GetVersion(); DWORD dwMajorVer = (DWORD)(LOBYTE(LOWO...
  • mac平台 Qt应用程序 设置版本号 获取版本号
  • C++ 获取系统版本

    2019-12-16 09:56:03
    } 效果图: 获取 ReleaseId string get_systemReleaseId(){ string releaseId = ""; HKEY hKey_return = NULL; char keyValue[256]; DWORD keySzType; DWORD keySize; if(ERROR_SUCCESS != RegOpenKeyEx(HKEY...
  • c++获取mac操作系统版本号

    千次阅读 2020-03-18 17:48:32
    首先Qt当中有一个QSysInfo类,按道理是可以获取系统版本的。但是我们看下面这个函数,它的返回值MacVersion是一个枚举,这个枚举最多能获取到10.12的系,显然不符合我们的要求。 所以,我们只有另辟蹊径,...
  • C++版的系统版本获取, 可以获取Windows95至Windows8的详细版本信息, 包括其中的特殊版本,如:Windows 7 preBeta build M3 PDC 2008之类的。
  • c++获取OpenGL版本号的两种方法

    千次阅读 2017-06-02 14:42:46
    qDebug()("OpenGL实现的版本号:")((char*)OpenGLVersion); qDebug()("GLU工具库版本:")((char*)gluVersion); glutDestroyWindow(wnd); #else PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR),...
  • 内容索引:VC/C++源码,系统相关,控制面板,CPL 这个功能很使用,大家说不定能用上,C++读取/运行系统控制面板中所有程序的列表信息。
  • 获取系统版本号的有个GetVersion()、GetVersionEx()函数,判断操作系统版本有VerifyVersionInfo() 以上三种函数在Win7以上的系统变得不灵了,获取到的都是:6.2。 对于使用VC、VS版本比较低的用户,可能并不支持...
  • windows通过c++获取操作系统主要分两种: 1、windows是8.1版本以下版本:获取操作系统可以通过windows提供的api中GetVersionEx函数来获取 2、windows是8.1版本及以上:获取操作系统主要通过RtlGetNtVersionNumbers...
  • 调用NetWkstaGetInfo判断系统是win7、win8还是win10,调用GetNativeSystemInfo判断系统的位数。
  • 今天来给大家分享一个使用WMI来获取Windows操作系统内核版本号的例子。 首先我们打开WMI测试器,连接ROOT\CIMV2命名空间,输入WQL查询语句SELECT * FROM Win32_OperatingSystem, 然后在查询的结果里我们找到...
  • c++ 获取win10系统版本

    千次阅读 2016-01-19 12:03:29
    c++ 获取win10系统版本
  • 获取Windows系统版本号

    万次阅读 2016-05-28 15:48:18
    由于前段时间比较忙,一直没有来跟大家分享交流技术,实在是抱歉,往后我会不定时跟大家分享一些C++技术。 废话 有些东西看似简单,但坑多着呢,所以大家还是要多亲自尝试,不要眼高手低。 核心代码 //读取操作系统...
  • VC++获取Windows操作系统的语言版本(附源码)

    千次阅读 多人点赞 2022-04-09 17:15:56
    本文讲述如何获取Windows操作系统的语言版本
  • C++获取操作系统版本号和默认语言

    千次阅读 2013-12-04 14:56:33
    //以下是获得系统类型和版本的代码 OSVERSIONINFO osvi; ZeroMemory(&osvi,sizeof(OSVERSIONINFO)); osvi.dwOSVersionInfoaSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); //以下获得系统的默认使用语言 ...
  • C++ 获取 IE 版本

    千次阅读 2016-01-26 10:51:27
    版本为 %d.%d.%d.%d", dwMajorVersion, dwMinorVersion, dwBuildNumber, dwRevisionNumber);MessageBoxW(NULL, buf, L"Title", NULL); , Helvetica, sans-serif;">return </span><span style="font-family: Arial,...
  • Mac获取系统版本、机型

    千次阅读 2022-01-25 15:22:34
    // 获取系统版本 NSString *versionString; NSDictionary * sv = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"]; versionString = [sv objectForKey:@...
  • C++获取系统硬件信息

    千次阅读 2020-02-29 15:19:12
    官方实例:Example: Creating a WMI Application ...基本思路是:调用IWbemServices::ExecQuery方法,通过WQL语法(SQL for WMI)查询关键字获取相应的设备信息类(关键字就是类名),然后调用IWbemClassObject::...
  • vc获取windows系统信息mfcvc获取windows系统信息mfcvc获取windows系统信息mfcvc获取windows系统信息mfc
  • 文章目录创建 NDK 项目NDK 项目 相关配置NDK 中获取 Android 版本号 创建 NDK 项目 1. 创建支持 NDK 的项目 : 当前最新的 Android Studio 支持直接创建 支持 C/C++ 的带 NDK 配置的项目 ; 如果向现有项目加入 C...
  • 测试系统版本号.7z

    2019-08-02 17:48:51
    vs2017 c++获取系统版本号。 不同的系统版本,有些方法不可用。 https://www.cnblogs.com/Bachelor/p/11290159.html
  • C++ 通过注册表获取Windows版本信息

    千次阅读 2018-08-17 14:10:33
    原理:通过注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion下值项的值来获取相关信息 #include <atlstr.h> // 使用CString类 #include <windows.h> #include <iostream>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,848
精华内容 25,939
关键字:

c++获取系统版本号

c++ 订阅