获取windows 系统信息
来源:互联网 发布:celestia mac 编辑:程序博客网 时间:2024/05/16 05:16
方法有好多中,此处都是总结网络上的内容,前辈已经把window 10 系统之前的坑趟完
老方法:转载这里写链接内容
//读取操作系统的名称 string GetSystemName() { SYSTEM_INFO info; //用SYSTEM_INFO结构判断64位AMD处理器 GetSystemInfo(&info); //调用GetSystemInfo函数填充结构 OSVERSIONINFOEX os; os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); string osname = "unknown OperatingSystem."; if(GetVersionEx((OSVERSIONINFO *)&os)) { //下面根据版本信息判断操作系统名称 switch(os.dwMajorVersion)//判断主版本号 { case 4: switch(os.dwMinorVersion)//判断次版本号 { case 0: if(os.dwPlatformId==VER_PLATFORM_WIN32_NT) osname = "Microsoft Windows NT 4.0"; //1996年7月发布 else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) osname = "Microsoft Windows 95"; break; case 10: osname = "Microsoft Windows 98"; break; case 90: osname = "Microsoft Windows Me"; break; } break; case 5: switch(os.dwMinorVersion) //再比较dwMinorVersion的值 { case 0: osname = "Microsoft Windows 2000";//1999年12月发布 break; case 1: osname = "Microsoft Windows XP";//2001年8月发布 break; case 2: if(os.wProductType==VER_NT_WORKSTATION && info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) { osname = "Microsoft Windows XP Professional x64 Edition"; } else if(GetSystemMetrics(SM_SERVERR2)==0) osname = "Microsoft Windows Server 2003";//2003年3月发布 else if(GetSystemMetrics(SM_SERVERR2)!=0) osname = "Microsoft Windows Server 2003 R2"; break; } break; case 6: switch(os.dwMinorVersion) { case 0: if(os.wProductType == VER_NT_WORKSTATION) osname = "Microsoft Windows Vista"; else osname = "Microsoft Windows Server 2008";//服务器版本 break; case 1: if(os.wProductType == VER_NT_WORKSTATION) osname = "Microsoft Windows 7"; else osname = "Microsoft Windows Server 2008 R2"; break; case 2: if(os.wProductType == VER_NT_WORKSTATION) osname = "Microsoft Windows 8"; else osname = "Microsoft Windows Server 2012"; break; case 3: if(os.wProductType == VER_NT_WORKSTATION) osname = "Microsoft Windows 8.1"; else osname = "Microsoft Windows Server 2012 R2"; break; } break; case 10: switch(os.dwMinorVersion) { case 0: if(os.wProductType == VER_NT_WORKSTATION) osname = "Microsoft Windows 10"; else osname = "Microsoft Windows Server 2016 Technical Preview";//服务器版本 break; } break; } }//if(GetVersionEx((OSVERSIONINFO *)&os)) //https://msdn.microsoft.com/en-us/library/ms724832.aspx return osname; }
系统升级,对软件开发人员来说是个打击,测试起来太麻烦,兼容性问题也越来越多,坑也越来越多
本列子核心代码就一个函数:GetVersionEx,但是Win8.1和Win10获取到的版本缺一直是6.2(Win8)
需要仔细阅读微软说明这里写链接内容
出现这个问题的原因:简单讲就是兼容问题。可以通过修改manifest文件解决,也可以采用新的API来获取版本号。但是由于新的API在低版本操作系统没有,还要特别处理,我们干脆使用修改manifest文件的方法,提高程序自身的兼容性,从而得到正确的系统版本信息。
<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> <!-- Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!-- Windows 8 --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> </application> </compatibility> </assembly>
将以上内容保存为compatibility.xml,留着备用
实际项目中使用,配置目标那里选则所有配置,配置属性->清单工具->输入和输出-附加清单文件 填写compatibility.xml,并把这个文件拷贝到项目源代码目录。
如果以上方法不能满足你的需求请看这里写链接内容
阅读全文
0 0
- 获取windows系统信息
- 获取windows系统信息
- 获取windows 系统信息
- 获取windows系统版本信息
- 获取Windows系统版本信息
- windows系统信息获取 注册表
- 获取Windows系统的进程运行信息
- 获取Windows系统的进程运行信息
- 获取Windows系统的进程运行信息
- 获取系统信息的有关Windows API
- 获取Windows系统的进程运行信息
- Windows Phone 7 系统信息获取示例
- windows API获取系统版本信息
- js获取当前Windows系统信息
- C语言获取Windows系统进程信息
- windows编程学习之获取系统信息
- cmd命令获取WINDOWS系统信息
- windos sdk windows系统信息:获取或设置硬件信息
- 忽略
- ElasticSearch数据导入和搜索的流程简析
- Springboot yml获取系统环境变量的值
- Javascript中的数据结构
- Spring 如何通过 XML 装配 bean?
- 获取windows 系统信息
- 强大的SpannableStringBuilder
- 堆化-LintCode
- Max+Decode的妙用
- js获取后台response的内容。
- Linux Shell 批量重命名的方法总览
- 常用URL Scheme
- Java IO 流有图有真相!
- 32位处理器的寄存器介绍