怎么用VC 判断操作系统
各位大虾
请问怎么用VC 判断操作系统是Winxp,Vista还是Win7
还有怎么用VC 判断系统是Win32 还是Win 64
------解决方案--------------------在网上搜一下windows API 函数中关于返回系统版本号的方法。
------解决方案--------------------试试用这个函数:
DWORD GetEnvironmentVariable(
LPCTSTR lpName, // address of environment variable name
LPTSTR lpBuffer, // address of buffer for variable value
DWORD nSize // size of buffer, in characters
);
可以得到环境变量。你可以用这个函数得到名字为"OS"的环境变量,然后就可以判断是什么系统了。这是一个办法,你可以试试。我做文件加密软件,就是用这个函数来得到temp的值的。
------解决方案--------------------查了一下,这个函数:
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInformation // pointer to version
// information structure
);
可以得到。具体用法你再百度或MSDN一下吧。
------解决方案--------------------http://support.microsoft.com/kb/307393
http://support.microsoft.com/kb/188987
------解决方案--------------------BOOL WINAPI GetVersionEx(
__in_out LPOSVERSIONINFO lpVersionInfo
);
------解决方案--------------------[code=C/C++][/code]
#include <windows.h>
#include <stdio.h>
void main()
{
OSVERSIONINFO osvi;
BOOL bIsWindowsXPorLater;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
bIsWindowsXPorLater =
( (osvi.dwMajorVersion > 5) ||
( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));
if(bIsWindowsXPorLater)
printf("The system meets the requirements.\n");
else printf("The system does not meet the requirements.\n");
}
------解决方案--------------------OSVERSIONINFO Version;
ZeroMemory(&Version,sizeof(OSVERSIONINFO));
Version.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&Version);
if (Version.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
if((Version.dwMajorVersion==5)&&(Version.dwMinorVersion==0))
{
return WIN2K;
}else if((Version.dwMajorVersion==5)&&(Version.dwMinorVersion>0))
{
return WINXP;
}else if((Version.dwMajorVersion==6)&&(Version.dwMinorVersion==0))
return VISTA;
else if((Version.dwMajorVersion>=6))
return WIN7;
}
else if(Version.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
if ((Version.dwMajorVersion == 4) && (Version.dwMinorVersion < 90) )
{
return WIN98;
}
if ((Version.dwMajorVersion == 4) && (Version.dwMinorVersion >= 90) )
{
return WINME;
}
}
------解决方案--------------------判断32 or 64
http://www.wangluo8.com/html/diannao/dnzs/2009/0328/336.html
------解决方案--------------------64位Wnidows 里面有个叫Wow64 的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo 可以获得这个信息。
代码示例:
SYSTEM_INFO si;
GetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 )
{
//64 位操作系统
}
else
{
// 32 位操作系统