用C++代码判断操作系统类型
(2012-08-02 16:20:02)
- #include <windows.h>
- #include <Lmcons.h>
- #include <stdio.h>
-
- void ShowVersionInfo();
- void ShowSystemInfo();
- void GetFolders();
- void GetNames();
- void MouseSpeed();
-
- int main()
-
{
-
ShowVersionInfo();
-
ShowSystemInfo();
-
GetFolders();
-
GetNames();
-
MouseSpeed();
-
}
-
- void ShowVersionInfo()
-
{
-
OSVERSIONINFOEX ovex;
-
CHAR szVersionInfo[1024];
-
*szVersionInfo = '\x00';
-
// 设置参数大小,调用并判断是否成功
-
ovex.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
-
if(!GetVersionEx(&ovex))
-
{
-
printf("error %d\n",GetLastError());
-
return;
-
}
-
// 判断版本
-
if(ovex.dwMajorVersion==5)
-
{
-
if(ovex.dwMinorVersion==0)
-
lstrcat(szVersionInfo,"Windows 2000 ");
-
else if(ovex.dwMinorVersion==1)
-
lstrcat(szVersionInfo,"Windows XP ");
-
else if(ovex.dwMinorVersion==2)
-
lstrcat(szVersionInfo,"Windows Server 2003 ");
-
else if(ovex.dwMinorVersion==7)
-
lstrcat(szVersionInfo,"Windows 7 ");
-
}
-
else if(ovex.dwMajorVersion == 6)
-
lstrcat(szVersionInfo,"Windows Vista ");
-
else
-
lstrcat(szVersionInfo,"Windows NT 4.0 或者其他 ");
-
// 安装的SP,字符串
-
lstrcat(szVersionInfo,ovex.szCSDVersion);
-
// 判断wProductType,产品类型
-
switch(ovex.wProductType)
-
{
-
case VER_NT_DOMAIN_CONTROLLER:
-
lstrcat(szVersionInfo,"\n域控制器");
-
break;
-
case VER_NT_SERVER:
-
lstrcat(szVersionInfo,"\n服务器");
-
break;
-
case VER_NT_WORKSTATION :
-
lstrcat(szVersionInfo,"\n独立工作站");
-
break;
-
}
-
// 判断wSuiteMask
-
if(ovex.wSuiteMask & VER_SUITE_PERSONAL)
-
{
-
lstrcat(szVersionInfo,"\nWindows XP Home Edition");
-
}
-
if(ovex.wSuiteMask & VER_SUITE_SINGLEUSERTS)
-
{
-
lstrcat(szVersionInfo,"\n安装了终端服务,但只支持一个会话");
-
}
-
// wSuiteMask成员还可能是以下值的组合
-
//VER_SUITE_BLADE
-
//VER_SUITE_COMPUTE_SERVER
-
//VER_SUITE_DATACENTER
-
//VER_SUITE_ENTERPRISE
-
//VER_SUITE_EMBEDDEDNT
-
//VER_SUITE_PERSONAL
-
//VER_SUITE_SINGLEUSERTS
-
//VER_SUITE_SMALLBUSINESS
-
//VER_SUITE_SMALLBUSINESS_RESTRICTED
-
//VER_SUITE_STORAGE_SERVER
-
//VER_SUITE_TERMINAL
-
printf("%s\n",szVersionInfo);
-
}
-
- void ShowSystemInfo()
-
{
-
SYSTEM_INFO si;
-
GetSystemInfo(&si);
-
printf("内存分页大小:0x%.8X,可用内存起始:0x%.8X,可用内存结束:0x%.8X,\n"
-
"处理器个数:%d,处理器类型:",
-
si.dwPageSize,
-
si.lpMinimumApplicationAddress,
-
si.lpMaximumApplicationAddress,
-
si.dwNumberOfProcessors);
-
-
switch (si.dwProcessorType)
-
{
-
case PROCESSOR_INTEL_386:
-
printf("386");
-
break;
-
case PROCESSOR_INTEL_486:
-
printf("486");
-
break;
-
case PROCESSOR_INTEL_PENTIUM:
-
printf("pentium");
-
printf(", Cpu Model 0x%.2X, Stepping 0x%.2X",
-
(BYTE)(si.wProcessorRevision>>8),
-
(BYTE)si.wProcessorRevision);
-
break;
-
}
-
printf("\n处理器架构:");
-
switch (si.wProcessorArchitecture)
-
{
-
case PROCESSOR_ARCHITECTURE_INTEL:
-
printf("intel");
-
printf(" CPU vendor is %d",si.wProcessorLevel);
-
break;
-
case PROCESSOR_ARCHITECTURE_IA64:
-
printf("64 bits intel");
-
break;
-
case PROCESSOR_ARCHITECTURE_AMD64:
-
printf("64 bits AMD");
-
break;
-
case PROCESSOR_ARCHITECTURE_UNKNOWN:
-
printf("UNKNOWN");
-
break;
-
}
-
printf("\n");
-
}
-
- void GetFolders()
-
{
-
TCHAR szSystemDirectory[MAX_PATH];
-
TCHAR szWindowsDirectory[MAX_PATH];
-
-
GetSystemDirectory(szSystemDirectory,MAX_PATH);
-
GetWindowsDirectory(szWindowsDirectory,MAX_PATH);
-
printf("系统目录:\t%s\nWindows目录:\t%s\n",
-
szSystemDirectory,
-
szWindowsDirectory);
-
}
-
- void GetNames()
-
{
-
DWORD dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;
-
DWORD dwUserNameLen = UNLEN+1;
-
TCHAR szComputerName[MAX_COMPUTERNAME_LENGTH+1];
-
TCHAR szUserName[UNLEN + 1];
-
if(!SetComputerName("My_Computer"))
-
{
-
printf("Set Error %d",GetLastError());
-
}
-
GetComputerName(szComputerName,&dwComputerNameLen);
-
-
printf("计算机名:%s\n",szComputerName);
-
-
//ComputerNameNetBIOS
-
//ComputerNameDnsHostname
-
//ComputerNameDnsFullyQualified
-
//ComputerNamePhysicalNetBIOS
-
//ComputerNamePhysicalDnsHostname
-
//ComputerNamePhysicalDnsDomain
-
//ComputerNamePhysicalDnsFullyQualified
-
dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;
-
GetComputerNameEx(ComputerNameDnsHostname,szComputerName,&dwComputerNameLen);
-
printf("ComputerNameDnsHostname: %s\n",szComputerName);
-
-
dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;
-
GetComputerNameEx(ComputerNamePhysicalNetBIOS,szComputerName,&dwComputerNameLen);
-
printf("ComputerNamePhysicalNetBIOS: %s\n",szComputerName);
-
GetUserName(szUserName,&dwUserNameLen);
-
printf("用户名:%s\n",szUserName);
-
}
-
- void MouseSpeed()
-
{
-
-
BOOL fResult;
-
int aMouseInfo[3]; // 保存数据信息的数组
-
-
// 调用 SystemParametersInfo
-
fResult = SystemParametersInfo(
-
SPI_GETMOUSE, // 获取鼠标信息
-
0, // 未使用
-
&aMouseInfo, // 用于保存鼠标信息
-
0); // 未使用
-
-
// 把鼠标速度加倍
-
if( fResult )
-
{
-
aMouseInfo[2] = 2 * aMouseInfo[2];
-
-
SystemParametersInfo(
-
SPI_SETMOUSE, // 设置鼠标信息
-
0, // 未使用
-
aMouseInfo, // 鼠标信息
-
SPIF_SENDCHANGE); // 更新 win.ini
-
}
-
}
喜欢
0
赠金笔
加载中,请稍候......