我看了各位的回答,要么低级要么麻烦,我的想法是调用windowsAPI里的get系列函数获取相关数据,我记得有个叫getsysteminfo可以百科一下。
调用相应的API就可以吧系统的详细信息获取,比如位数架构,大小端,蛇姐数据被保存在大小不一的结构体中,然后你可以对这些数据进行判断来选择要执行的代码啦~~
记住不要system也不读取注册表,windows直接就有读取系统信息的API
调用API 读取注册表就OK了
#include
#include
#include
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;
}
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
};
很简单的!运行 systeminfo命令