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

不是显示出来,我是想写一个程序,但不同的系统下需要执行不同的语句,怎么写?... 不是显示出来,我是想写一个程序,但不同的系统下需要执行不同的语句,怎么写? 展开
 我来答
迅捷司鼐膊俳b9ade
推荐于2016-11-03 · TA获得超过532个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:208万
展开全部
我看了各位的回答,要么低级要么麻烦,我的想法是调用windowsAPI里的get系列函数获取相关数据,我记得有个叫getsysteminfo可以百科一下。
调用相应的API就可以吧系统的详细信息获取,比如位数架构,大小端,蛇姐数据被保存在大小不一的结构体中,然后你可以对这些数据进行判断来选择要执行的代码啦~~
记住不要system也不读取注册表,windows直接就有读取系统信息的API
veket的小号
推荐于2016-06-08 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3939万
展开全部
调用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;
}
追问
不能编译……哪里错了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hxl4054
2014-03-01 · TA获得超过1.8万个赞
知道大有可为答主
回答量:1.2万
采纳率:65%
帮助的人:5211万
展开全部
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
};
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-01
展开全部
很简单的!运行 systeminfo命令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式