1.获取CPIUD
void CSystemInfoSampleDlg::OnButtonGetCpuid() // 获取CPU ID值
{
BYTE szCPU[16]= {0}; // 定义存放CPU类型的数组
UINT uCPUID = 0U; // 定义存放CPUID的数组
_asm // 开始执行汇编
{
mov eax, 0 // 获取CPU型号
cpuid
mov dword ptr szCPU[0], ebx // 取CPU型号的前4个字符
mov dword ptr szCPU[4], edx // 取CPU型号的中间4个字符
mov dword ptr szCPU[8], ecx // 取CPU型号的最后4个字符
mov eax, 1 // 取CPUID
cpuid
mov uCPUID, edx // 取CPUID的值
}
WriteLog("当前系统的CPU类型为=%s----CPU ID=%u", szCPU, uCPUID); // 输出CPU信息
}
2.获取CPU时钟频率
void CSystemInfoSampleDlg::OnButtonGetCpufrequency() // 获取CPU时钟频率
{
unsigned long ulSpeed=0; // 定义CPU时钟频率变量
HKEY hKey; // 定义注册表键
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{ // 打开注册表
unsigned long ulLen= sizeof(ulSpeed); // 赋值长度
RegQueryValueEx(hKey, "~MHz", NULL, NULL, (LPBYTE)&ulSpeed, &ulLen); // 查询CPU时钟频率
RegCloseKey(hKey); // 关闭注册表
WriteLog("CPU时钟频率=%ldMHz",ulSpeed);// 显示获取的信息
}
else WriteLog("获取CPU时钟频率失败"); // 输出错误信息
}
3.获得Windows路径获得System路径
void CSystemInfoSampleDlg::OnButtonGetWindowpath() // 获得Windows路径
{
TCHAR szPath[MAX_PATH]={0}; // 定义路径变量
int nLength = GetWindowsDirectory(szPath, MAX_PATH); // 获取Windows路径
if (nLength > 0) WriteLog("获取Window路径=%s", szPath); // 输出路径信息
else WriteLog("获取Window路径失败"); // 输出错误信息
}
void CSystemInfoSampleDlg::OnButtonGetSystempath() // 获得System路径
{
TCHAR szPath[MAX_PATH]={0}; // 定义路径变量
int nLength = GetSystemDirectory(szPath, MAX_PATH); // 获取System路径
if (nLength > 0) WriteLog("获取System路径=%s", szPath); // 输出路径信息
else WriteLog("获取System路径失败"); // 输出错误信息
}
4.获取特殊文件夹路径
void CSystemInfoSampleDlg::OnButtonGetspecialpath() // 获取特殊文件夹路径
{
TCHAR szPath[MAX_PATH]; // 定义路径变量
int iIndex[]={CSIDL_ALTSTARTUP, CSIDL_APPDATA, CSIDL_BITBUCKET, CSIDL_COMMON_ALTSTARTUP,
CSIDL_COMMON_DESKTOPDIRECTORY, CSIDL_COMMON_FAVORITES, CSIDL_COMMON_PROGRAMS,
CSIDL_COMMON_STARTMENU, CSIDL_COMMON_STARTUP, CSIDL_CONTROLS, CSIDL_COOKIES,
CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY, CSIDL_DRIVES, CSIDL_FAVORITES,
CSIDL_FONTS, CSIDL_HISTORY, CSIDL_INTERNET, CSIDL_INTERNET_CACHE,
CSIDL_NETHOOD, CSIDL_NETWORK, CSIDL_PERSONAL, CSIDL_PRINTERS, CSIDL_PRINTHOOD,
CSIDL_PROGRAMS, CSIDL_RECENT, CSIDL_SENDTO, CSIDL_STARTMENU, CSIDL_STARTUP,
CSIDL_TEMPLATES}; // 路径CSIDL数组
CString csIndex[]={"CSIDL_ALTSTARTUP", "CSIDL_APPDATA", "CSIDL_BITBUCKET", "CSIDL_COMMON_ALTSTARTUP",
"CSIDL_COMMON_DESKTOPDIRECTORY", "CSIDL_COMMON_FAVORITES", "CSIDL_COMMON_PROGRAMS",
"CSIDL_COMMON_STARTMENU", "CSIDL_COMMON_STARTUP", "CSIDL_CONTROLS", "CSIDL_COOKIES",
"CSIDL_DESKTOP", "CSIDL_DESKTOPDIRECTORY", "CSIDL_DRIVES", "CSIDL_FAVORITES",
"CSIDL_FONTS", "CSIDL_HISTORY", "CSIDL_INTERNET", "CSIDL_INTERNET_CACHE",
"CSIDL_NETHOOD", "CSIDL_NETWORK", "CSIDL_PERSONAL", "CSIDL_PRINTERS", "CSIDL_PRINTHOOD",
"CSIDL_PROGRAMS", "CSIDL_RECENT", "CSIDL_SENDTO", "CSIDL_STARTMENU", "CSIDL_STARTUP",
"CSIDL_TEMPLATES"}; // 路径名称数组
for (int i = 0;i < 30; i++) // 使用for循环依次获取文件夹
{
memset(szPath, 0x00, sizeof(szPath)); // 清空变量值
if (SHGetSpecialFolderPath(HWND_DESKTOP, szPath, iIndex[i], FALSE) != 0) // 获取特殊文件夹
WriteLog("%s=%s", csIndex[i], szPath); // 输出文件夹路径
else WriteLog("获取%s失败", csIndex[i]); // 输出错误信息
}
}
5.检测系统启动模式
void CSystemInfoSampleDlg::OnButtonGetstartmode() // 检测系统启动模式
{
int iMode = GetSystemMetrics(SM_CLEANBOOT); // 获取系统启动模式
switch (iMode) // 判断返回的模式值
{
case 0: // 正常模式
WriteLog("系统启动模式为--正常模式");break;
case 1: // 安全模式
WriteLog("系统启动模式为--安全模式");break;
case 2: // 网络环境下安全模式
WriteLog("系统启动模式为--网络环境下安全模式");break;
default:// 其他模式
WriteLog("系统启动模式为--其他");break;
}
}
6.判断操作系统类型
void CSystemInfoSampleDlg::OnButtonGetSysversion() // 判断操作系统类型
{
OSVERSIONINFO osvi; // 定义版本信息结构
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); // 设置版本结构大小
if (GetVersionEx (&osvi)) // 获取版本信息
WriteLog("获取操作系统版本成功,主版本=%d;次版本=%d;\r\n生成版本=%d;平台ID=%d;系统描述=%s",
osvi.dwMajorVersion, osvi.dwMinorVersion,
osvi.dwBuildNumber, osvi.dwPlatformId, osvi.szCSDVersion); // 输出版本信息
else WriteLog("获取操作系统版本失败"); // 输出错误信息
}
7.获取当前系统的运行时间
void CSystemInfoSampleDlg::OnButtonGetruntime() // 获取当前系统的运行时间
{
DWORD dwTicks = GetTickCount(); // 获取运行的单位时间数
CTimeSpan timeSpan(dwTicks/1000); // 将其转换为CTimeSpan类型
// 输出运行时间信息
WriteLog("系统已经运行了%d天,%d小时,%d分钟,%d秒", timeSpan.GetDays(), timeSpan.GetHours(), timeSpan.GetMinutes(), timeSpan.GetSeconds());
}
8.系统启动时间
void CSystemInfoSampleDlg::OnButtonGetstarttime() // 获取Windows 2000系统启动时间
{
DWORD dwTicks = GetTickCount(); // 获取运行的单位时间数
CTime time = CTime::GetCurrentTime(); // 获取当前时间
CTimeSpan timeSpan(dwTicks/1000); // 将其转换为CTimeSpan类型
time -= timeSpan; // 当前时间减去已经运行的时间
WriteLog("系统启动时间为:%s", time.Format("%Y-%m-%d %H:%M:%S")); // 输出启动时间
}
9. 获取处理器信息
void CSystemInfoSampleDlg::OnButtonGetProcessor() // 获取处理器信息
{
SYSTEM_INFO sysinfo; // 定义系统信息结构
GetSystemInfo(&sysinfo); // 获取处理器信息
switch(sysinfo.wProcessorArchitecture) // 判断处理器种类
{
case PROCESSOR_ARCHITECTURE_INTEL: // Intel处理器
switch (sysinfo.wProcessorLevel) // 判断处理器型号
{
case 3:
WriteLog("处理器类型=PROCESSOR_ARCHITECTURE_INTEL--Intel 80386"); break;
case 4:
WriteLog("处理器类型=PROCESSOR_ARCHITECTURE_INTEL--Intel 80486"); break;
case 5:
WriteLog("处理器类型=PROCESSOR_ARCHITECTURE_INTEL--Pentium"); break;
default:
WriteLog("处理器类型=PROCESSOR_ARCHITECTURE_INTEL"); break;
}
break;
case PROCESSOR_ARCHITECTURE_MIPS : // MIPS
WriteLog("处理器类型=MIPS--R%d000", sysinfo.wProcessorLevel);
break;
case PROCESSOR_ARCHITECTURE_ALPHA: // ALPHA
WriteLog("处理器类型=ALPHA--%d", sysinfo.wProcessorLevel);
break;
case PROCESSOR_ARCHITECTURE_PPC: // PPC
switch (sysinfo.wProcessorLevel) // 判断处理器型号
{
case 1:
WriteLog("处理器类型=PPC--PPC 601");break;
case 3:
WriteLog("处理器类型=PPC--PPC 603");break;
case 4:
WriteLog("处理器类型=PPC--PPC 604");break;
case 6:
WriteLog("处理器类型=PPC--PPC 603+");break;
case 9:
WriteLog("处理器类型=PPC--PPC 604+");break;
case 20:
WriteLog("处理器类型=PPC--PPC 620");break;
default:
WriteLog("处理器类型=PPC--PPC PPC");
}
break;
case PROCESSOR_ARCHITECTURE_UNKNOWN : // 处理器未知
WriteLog("处理器类型未知");break;
default: // 其他未知值
WriteLog("处理器类型未知");break;
}
WriteLog("系统中的处理器数目为%d", sysinfo.dwNumberOfProcessors); // 输出处理器数目
}
10.检测是否安装声卡
void CSystemInfoSampleDlg::OnButtonIsaudio() // 检测是否安装声卡
{ // 打开音频播放
MMRESULT mmResult = waveOutOpen(NULL, WAVE_MAPPER, NULL, NULL, NULL,WAVE_FORMAT_QUERY);
if (GetLastError() == MMSYSERR_NODRIVER) // 如果错误结果为没有驱动=没有安装声卡
WriteLog("系统中没有安装声卡"); // 输出提示信息
else WriteLog("系统中安装了声卡"); // 输出提示信息
}
11.获取当前用户名
void CSystemInfoSampleDlg::OnButtonGetUsername() // 获取当前用户名
{
TCHAR szName[MAX_PATH]; // 定义用户名数组
DWORD dwLen = MAX_PATH; // 定义用户名长度
if (GetUserName(szName, &dwLen)) // 获取用户名
WriteLog("获取用户名成功,长度=%d;用户名=%s", dwLen, szName);// 输出用户名
else WriteLog("获取用户名失败"); // 输出错误信息
}
12.获取系统环境变量
void CSystemInfoSampleDlg::OnButtonGetEnrovar() // 获取系统环境变量
{
char szBuffer[1024] = {0}; // 定义环境变量值数组
DWORD dwSize=1024; // 定义数组大小
if (GetEnvironmentVariable("PATH",(LPTSTR)szBuffer, dwSize) > 0) // 获取环境变量值
WriteLog("环境变量PATH=%s", szBuffer); // 输出环境变量值
else WriteLog("获取环境变量失败"); // 输出错误提示
}
13.修改计算机名称
void CSystemInfoSampleDlg::OnButtonSetComputeName() // 修改计算机名称
{
if (SetComputerName("huge-lln")) // 修改计算机名称
{
char szName[128] = ""; // 定义计算机名称数组
DWORD dwLen = 128; // 定义计算机名称长度
if (GetComputerName(szName, &dwLen)) // 获取计算机名称
WriteLog("设置计算机名称成功,修改后的计算机名称=%s", szName); // 输出计算机名称
}
else
WriteLog("设置计算机名称失败"); // 输出错误提示
}
14.获取当前屏幕颜色质量
void CSystemInfoSampleDlg::OnButtonGetScreencolor() // 获取当前屏幕颜色质量
{
HDC hdc = GetDC()->m_hDC; // 获取设备上下文句柄
int iColors = GetDeviceCaps(hdc, BITSPIXEL); // 获取屏幕颜色质量
WriteLog("当前屏幕颜色质量为%d", iColors); // 输出屏幕颜色质量
}
15.获得当前屏幕的分辨率
void CSystemInfoSampleDlg::OnButtonGetScreenxy() // 获得当前屏幕的分辨率
{
int iScreenX = GetSystemMetrics(SM_CXSCREEN); // X分辨率
int iScreenY = GetSystemMetrics(SM_CYSCREEN); // Y分辨率
WriteLog("当前屏幕分辨率为%d*%d", iScreenX, iScreenY); // 输出屏幕分辨率
}