C语言如何获取系统版本?就是说win XP,win7还是其他的什么

不是显示出来,我是想写一个程序,但不同的系统下需要执行不同的语句,怎么写?

我看了各位的回答,要么低级要么麻烦,我的想法是调用windowsAPI里的get系列函数获取相关数据,我记得有个叫getsysteminfo可以百科一下。
调用相应的API就可以吧系统的详细信息获取,比如位数架构,大小端,蛇姐数据被保存在大小不一的结构体中,然后你可以对这些数据进行判断来选择要执行的代码啦~~
记住不要system也不读取注册表,windows直接就有读取系统信息的API
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-08
调用API 读取注册表就OK了
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
int main()
{
TCHAR buf[255];
int size;
HKEY hKey;
DWORD regType = REG_SZ;
LONG ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
0,
KEY_READ,
&hKey);
if(ret!=ERROR_SUCCESS)
{
_tprintf(TEXT("%s"), TEXT("无法打开\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"));
return 1;
}

size = 254;
ret = RegQueryValueEx(hKey, "ProductName",0,®Type,
buf, &size);
if(ret!=ERROR_SUCCESS)
_tprintf(TEXT("%s"), TEXT("无法读取ProductName"));
else
_tprintf(TEXT("系统:%s\n"), buf);

size = 254;
ret = RegQueryValueEx(hKey, "CSDVersion",0,®Type,
buf, &size);
if(ret!=ERROR_SUCCESS)
_tprintf(TEXT("%s"), TEXT("无法读取CSDVersion"), TEXT("错误"));
else
_tprintf(TEXT("补丁包:%s\n"), buf);

size = 254;
ret = RegQueryValueEx(hKey, "CurrentVersion",0,®Type,
buf, &size);
if(ret!=ERROR_SUCCESS)
_tprintf(TEXT("%s"), TEXT("无法读取CurrentVersion"), TEXT("错误"));
else
_tprintf(TEXT("版本号:%s\n"), buf);

size = 254;
ret = RegQueryValueEx(hKey, "CurrentBuildNumber",0,®Type,
buf, &size);
if(ret!=ERROR_SUCCESS)
_tprintf(TEXT("%s"), TEXT("无法读取CurrentBuildNumber"), TEXT("错误"));
else
_tprintf(TEXT("子版本号:%s\n"), buf);

RegCloseKey(hKey);
return 0;
}追问

不能编译……哪里错了吗?

第2个回答  2014-03-01
struct utsname {
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined
network" */
char release[]; /* OS release (e.g., "2.6.28") */
char version[]; /* OS version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};本回答被网友采纳
第3个回答  2014-03-01
很简单的!运行 systeminfo命令

C语言如何获取系统版本?就是说win XP,win7还是其他的什么
调用相应的API就可以吧系统的详细信息获取,比如位数架构,大小端,蛇姐数据被保存在大小不一的结构体中,然后你可以对这些数据进行判断来选择要执行的代码啦~~记住不要system也不读取注册表,windows直接就有读取系统信息的API

我大一学C语言,求能兼容WIN7的VC版本
如果你想学习C++,安装一个vs2008,或者vs2010就可以了。如果你想学习C语言,建议装虚拟机(例如Virtual box),虚拟一个windows xp,在xp中安装vc6.0. 我用vista直接安装vc6.0,不太好用。所以建议安装虚拟机。

...使其只要运行即获得管理员权限。(在win7系统下)
"IsolatedCommand"="cmd.exe \/c takeown \/f \\"%1\\" \/r \/d y && icacls \\"%1\\" \/grant administrators:F \/t"然后另存为win7获取管理员权限.reg 双击导入注册表,这样就获得了WIN7管理员权限了。在文件夹上单击右键就会出现 “管理员取得所有权”...

跪求c语言安装程序 win7 64位 vc6.0有64位的么 急用 907353197@qq.com...
1、虚拟一个XP系统。装VC6.0 2、装.NET架构VS2008或者2010,也可以选择C-Free 5(我就用这个,我系统也是WIN7 X64的,我给你发了个C-Free 5的安装程序)。

C语言编程软件安装问题
对于win7或win10,要设置兼容性:右键单击VC++6.0快捷方式,点属性,兼容性,勾选“以兼容模式运行”,在下面的列表里选择“Windows XP SP2”或"Windows XP SP3"。设置完兼容性,双击运行VC++6.0。如果打不开,提示“应用程序无法正常运行”,这是因为win10不支持汉化的VC++6.0启动程序,解决办法...

C语言学会有什么用?与C#和C++的关系如何?
c语言和C++, C#的关系 就好比:Windows98 和 WindowsXP、 Win7的关系。如果你学会熟练操作Windows98,学着用XP就很容易上手,进一步学Win7也一样。反之,如果你直接学习WindowsXP,也没有问题,因为Win98和XP很像。但如果你直接学习Win7,那么WindowsXP、Win98的很多设置你都不会了解到,因为Win7的...

c语言用什么软件
如果你是刚入门的话,那我建议你用winTC,界面与功能都很简单,你可以把精力放在学习C语言上。如果你想弄个复杂一点的,那得看你用什么操作系统,如果是XP的话,VC6.0或DevC++都可以,但如果是win7的话,VC6.0有点兼容问题。另外,如果你想要装VS2010的话,我保留意见,因外那个太大了,很多...

我大一学C语言,求能兼容WIN7的VC版本
尤其在对C\/C++支持上,所以学习C\/C++的,编软件的,都可装上用用。官网下载旗舰版, 不算太大,就2.5G。下载好后,先别急着装,先更改iso镜像文件中的key,更改过后,安装直接是正式的激活版。这里推荐一款编辑iso的软件,UltraISO,这是我用过的最好的iso编辑软件,比虚拟光驱,winiso等都强大...

想问下WIN7系统 该下什么C语言开放工具
Turbo C是经典的C语言编译器,以其简洁的界面和快速的编译速度著称。对于寻求轻量级开发工具,或是需要在较老版本操作系统上运行的开发者,Turbo C是一个不错的选择。点击此处,可获取Turbo C的下载链接。Visual C 6.0是由Microsoft开发的C语言开发工具,曾是Windows系统下的主流IDE。尽管在现代操作系统...

全国计算机二级c语言上机模拟考试系统,win7可以用的、、
全国计算机二级c语言上机模拟考试系统,一般情况下支持xp系统,现在还没有出现支持win7系统的软件 建议您安装双系统……

相似回答