通过注册表如何得到cpu硬盘内存的数据问题! 如何通过注册表如何得到cpu硬盘内存的数据问题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TCHAR computerbuf[256]; DWORD computersize=256; memset(computerbuf,0,256); if(!GetComputerName(computerbuf,&computersize)) return false; computerbuf[computersize]=0; sysinfo.computer[0]=0; strcat(sysinfo.computer,"计算机: "); strcat(sysinfo.computer,computerbuf); ///////get user name///////// TCHAR userbuf[256]; DWORD usersize=256; memset(userbuf,0,256); if(!GetUserName(userbuf,&usersize)) return false; userbuf[usersize]=0; sysinfo.user[0]=0; strcat(sysinfo.user,"用户名: "); strcat(sysinfo.user,userbuf); ///////get version////////// sysinfo.os[0]=0; strcat(sysinfo.os,"操作系统: "); OSVERSIONINFO osvi; memset(&osvi,0,sizeof(osvi)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); if(!GetVersionEx(&osvi)) return false; switch (osvi.dwPlatformId) { case VER_PLATFORM_WIN32_NT: if ( osvi.dwMajorVersion <= 4 ) strcat(sysinfo.os,"Microsoft Windows NT "); if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) strcat(sysinfo.os,"Microsoft Windows 2000 "); HKEY hKey; char szProductType[80]; DWORD dwBufLen; RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\ProductOptions", 0, KEY_QUERY_VALUE, &hKey ); RegQueryValueEx( hKey, "ProductType", NULL, NULL, (LPBYTE)szProductType, &dwBufLen); RegCloseKey(hKey); if ( lstrcmpi( "WINNT", szProductType) == 0 ) strcat(sysinfo.os,"Professional, " ); if ( lstrcmpi( "LANMANNT", szProductType) == 0 ) strcat(sysinfo.os,"Server, " ); if ( lstrcmpi( "SERVERNT", szProductType) == 0 ) strcat(sysinfo.os," Server, " ); if ( osvi.dwMajorVersion <= 4 ) { char temp[256]; sprintf(temp,"version %d.%d %s (Build %d)\n", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF); strcat(sysinfo.os,temp); } else { char temp[256]; sprintf(temp,"%s (Build %d)\n", osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF); strcat(sysinfo.os,temp); } break; case VER_PLATFORM_WIN32_WINDOWS: if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0) { strcat(sysinfo.os,"Microsoft Windows 95 "); if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' ) strcat(sysinfo.os,"OSR2 " ); } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10) { strcat(sysinfo.os,"Microsoft Windows 98 "); if ( osvi.szCSDVersion[1] == 'A' ) strcat(sysinfo.os,"SE " ); } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90) { strcat(sysinfo.os,"Microsoft Windows Millennium Edition "); } break; } ///////////get disk space///////////// sysinfo.disk[0]=0; strcat(sysinfo.disk,"磁盘空间: "); DWORD maskdriver; ULONGLONG totalspace=0,freespace=0; //ULONGLONG ULONGLONG ulltotalspace,ullfreespace,freebyte; DWORD drivertype; char driver[10]; if(!(maskdriver=GetLogicalDrives())) return false; for(int i=0;i<26;i++) { if(!(maskdriver>>i)) break; if(maskdriver>>i&1) { driver[0]=i+'A'; driver[1]=':'; driver[2]='\\'; driver[3]=0; drivertype=GetDriveType(driver); if(drivertype!=DRIVE_FIXED) continue; if(!GetDiskFreeSpaceEx (driver, (PULARGE_INTEGER)&freebyte, (PULARGE_INTEGER)&ulltotalspace, (PULARGE_INTEGER)&ullfreespace)) return false; totalspace+=ulltotalspace; freespace+=ullfreespace; } } DWORD dfreespace=0.0,dtotalspace=0.0,lv; dfreespace=(DWORD)freespace/(1024*1024*1024); dtotalspace=(DWORD)totalspace/(1024*1024*1024); lv=(DWORD)freespace/totalspace*100; char space[256]; sprintf(space,"总磁盘空间为:%.2fG,剩余磁盘空间为:%.2fG(占%.2f%c)",dtotalspace,dfreespace,lv,'%'); strcat(sysinfo.disk,space); ////////////////get cpu info////////////////// //通过注册表得到cpu的参数,很牛,呵呵 sysinfo.processor[0]=0; strcat(sysinfo.processor,"CPU: "); HKEY hKey; char szcpuinfo[80]; DWORD dwBufLen=80; RegOpenKeyEx( HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey ); RegQueryValueEx( hKey, "VendorIdentifier", NULL, NULL, (LPBYTE)szcpuinfo, &dwBufLen); szcpuinfo[dwBufLen]=0; strcat(sysinfo.processor,szcpuinfo); strcat(sysinfo.processor," "); memset(szcpuinfo,0,80); dwBufLen=80; RegQueryValueEx( hKey, "Identifier", NULL, NULL, (LPBYTE)szcpuinfo, &dwBufLen); szcpuinfo[dwBufLen]=0; strcat(sysinfo.processor,szcpuinfo); DWORD f; dwBufLen=8; RegQueryValueEx( hKey, "~MHz", NULL, NULL, (LPBYTE)&f, &dwBufLen); char hz[10]; sprintf(hz," %dMHZ",f); strcat(sysinfo.processor,hz); RegCloseKey(hKey); /////////////get mem size//////////// MEMORYSTATUS ms; GlobalMemoryStatus(&ms); char membuf[256]; sprintf(membuf,"物理内存: 总物理内存:%dMB,可用内存:%dMB (占%.2f%s)",ms.dwTotalPhys/1024/1024,ms.dwAvailPhys/1024/1024 ,(double)ms.dwAvailPhys/ms.dwTotalPhys*100,"%"); sysinfo.mem[0]=0; strcpy(sysinfo.mem,membuf); IE工具条按钮问题 请问一个问题,关于图像传输的 关于CreateProcess() 这个API函数的调用 求助,为什么文件多了一个字节,谢谢,都代码请教? 请问怎么把对话框加入到视图中去?? 我的问题再加50分,急死人啊!在线等待! 想把CString转换成字符数组怎么做? 请问xp有任务切换hook吗? 如何在CRichEdit中实现不带下划线的超链接 文件捆绑器是怎么实现的呢? 我将一幅真彩的位图用StretchBlt缩小显示时,出现了很差颜色,不知为什么,有什么解决的办法吗?up,gz有分啊! 请教: 如何知道某个窗口获得当前的焦点?
DWORD computersize=256;
memset(computerbuf,0,256);
if(!GetComputerName(computerbuf,&computersize))
return false;
computerbuf[computersize]=0;
sysinfo.computer[0]=0;
strcat(sysinfo.computer,"计算机: ");
strcat(sysinfo.computer,computerbuf);
///////get user name/////////
TCHAR userbuf[256];
DWORD usersize=256;
memset(userbuf,0,256);
if(!GetUserName(userbuf,&usersize))
return false;
userbuf[usersize]=0;
sysinfo.user[0]=0;
strcat(sysinfo.user,"用户名: ");
strcat(sysinfo.user,userbuf);
///////get version//////////
sysinfo.os[0]=0;
strcat(sysinfo.os,"操作系统: ");
OSVERSIONINFO osvi;
memset(&osvi,0,sizeof(osvi));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if(!GetVersionEx(&osvi))
return false;
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
if ( osvi.dwMajorVersion <= 4 )
strcat(sysinfo.os,"Microsoft Windows NT ");
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
strcat(sysinfo.os,"Microsoft Windows 2000 ");
HKEY hKey;
char szProductType[80];
DWORD dwBufLen;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE)szProductType, &dwBufLen);
RegCloseKey(hKey);
if ( lstrcmpi( "WINNT", szProductType) == 0 )
strcat(sysinfo.os,"Professional, " );
if ( lstrcmpi( "LANMANNT", szProductType) == 0 )
strcat(sysinfo.os,"Server, " );
if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
strcat(sysinfo.os," Server, " );
if ( osvi.dwMajorVersion <= 4 )
{
char temp[256];
sprintf(temp,"version %d.%d %s (Build %d)\n",
osvi.dwMajorVersion,
osvi.dwMinorVersion,
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
strcat(sysinfo.os,temp);
}
else
{
char temp[256];
sprintf(temp,"%s (Build %d)\n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
strcat(sysinfo.os,temp);
}
break;
case VER_PLATFORM_WIN32_WINDOWS:
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
strcat(sysinfo.os,"Microsoft Windows 95 ");
if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )
strcat(sysinfo.os,"OSR2 " );
} if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
{
strcat(sysinfo.os,"Microsoft Windows 98 ");
if ( osvi.szCSDVersion[1] == 'A' )
strcat(sysinfo.os,"SE " );
} if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
{
strcat(sysinfo.os,"Microsoft Windows Millennium Edition ");
}
break;
}
///////////get disk space/////////////
sysinfo.disk[0]=0;
strcat(sysinfo.disk,"磁盘空间: ");
DWORD maskdriver;
ULONGLONG totalspace=0,freespace=0;
//ULONGLONG
ULONGLONG ulltotalspace,ullfreespace,freebyte;
DWORD drivertype;
char driver[10];
if(!(maskdriver=GetLogicalDrives()))
return false;
for(int i=0;i<26;i++)
{
if(!(maskdriver>>i))
break;
if(maskdriver>>i&1)
{
driver[0]=i+'A';
driver[1]=':';
driver[2]='\\';
driver[3]=0;
drivertype=GetDriveType(driver);
if(drivertype!=DRIVE_FIXED)
continue;
if(!GetDiskFreeSpaceEx (driver,
(PULARGE_INTEGER)&freebyte,
(PULARGE_INTEGER)&ulltotalspace,
(PULARGE_INTEGER)&ullfreespace))
return false;
totalspace+=ulltotalspace;
freespace+=ullfreespace;
}
}
DWORD dfreespace=0.0,dtotalspace=0.0,lv;
dfreespace=(DWORD)freespace/(1024*1024*1024);
dtotalspace=(DWORD)totalspace/(1024*1024*1024);
lv=(DWORD)freespace/totalspace*100;
char space[256];
sprintf(space,"总磁盘空间为:%.2fG,剩余磁盘空间为:%.2fG(占%.2f%c)",dtotalspace,dfreespace,lv,'%');
strcat(sysinfo.disk,space);
////////////////get cpu info//////////////////
//通过注册表得到cpu的参数,很牛,呵呵
sysinfo.processor[0]=0;
strcat(sysinfo.processor,"CPU: ");
HKEY hKey;
char szcpuinfo[80];
DWORD dwBufLen=80;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
0, KEY_QUERY_VALUE, &hKey );
RegQueryValueEx( hKey, "VendorIdentifier", NULL, NULL,
(LPBYTE)szcpuinfo, &dwBufLen);
szcpuinfo[dwBufLen]=0;
strcat(sysinfo.processor,szcpuinfo);
strcat(sysinfo.processor," ");
memset(szcpuinfo,0,80);
dwBufLen=80;
RegQueryValueEx( hKey, "Identifier", NULL, NULL,
(LPBYTE)szcpuinfo, &dwBufLen);
szcpuinfo[dwBufLen]=0;
strcat(sysinfo.processor,szcpuinfo);
DWORD f;
dwBufLen=8;
RegQueryValueEx( hKey, "~MHz", NULL, NULL,
(LPBYTE)&f, &dwBufLen);
char hz[10];
sprintf(hz," %dMHZ",f);
strcat(sysinfo.processor,hz);
RegCloseKey(hKey);
/////////////get mem size////////////
MEMORYSTATUS ms;
GlobalMemoryStatus(&ms);
char membuf[256];
sprintf(membuf,"物理内存: 总物理内存:%dMB,可用内存:%dMB (占%.2f%s)",ms.dwTotalPhys/1024/1024,ms.dwAvailPhys/1024/1024
,(double)ms.dwAvailPhys/ms.dwTotalPhys*100,"%");
sysinfo.mem[0]=0;
strcpy(sysinfo.mem,membuf);