windows下C/C++如何获得当前主机的信息:操作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下C/C++如何获得当前主机的信息:操作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率?相关的知识,希望对你有一定的参考价值。

请高手指点:windows下C/C++如何获取主机的信息?需要用到哪些知识?我查了一些资料有些是说读注册表,WMI,MSDN上查GetSystemInfo GetDeviceCaps等等,我想能不能直接用API函数,不知道我到底要从哪里入手,请高手指点一下,我要用到哪些知识能实现这个功能?

示例代码如下:

GetsysInfo.h:

#ifndef _H_GETSYSINFO
#define _H_GETSYSINFO


#pragma once

#include <afxtempl.h>

class GetSysInfo

public:
GetSysInfo(void);
~GetSysInfo(void);

public:
/********获取操作系统版本,Service pack版本、系统类型************/
void GetOSVersion(CString &strOSVersion,CString &strServiceVersion);
BOOL IsWow64();//判断是否为64位操作系统

/***********获取网卡数目和名字***********/
int  GetInterFaceCount();
void GetInterFaceName(CString &InterfaceName,int pNum);

/***获取物理内存和虚拟内存大小***/
void GetMemoryInfo(CString &dwTotalPhys,CString &dwTotalVirtual);

/****获取CPU名称、内核数目、主频*******/
void GetCpuInfo(CString &chProcessorName,CString &chProcessorType,DWORD &dwNum,DWORD &dwMaxClockSpeed);

/****获取硬盘信息****/
void GetDiskInfo(DWORD &dwNum,CString chDriveInfo[]);

/****获取显卡信息*****/
void GetDisplayCardInfo(DWORD &dwNum,CString chCardName[]);
private:
CStringList Interfaces;                   //保存所有网卡的名字
CList < DWORD, DWORD &> Bandwidths;   //各网卡的带宽
CList < DWORD, DWORD &> TotalTraffics;    //各网卡的总流量
;

#endif



参考技术A 据我所知API可以,有部分行。获取系统版本,系统类型就可以。获取cpu,网卡,内存等硬件信息,系统病没有提供这个API的,利用率就可以。注册表也没有记录硬件信息,注册表这个方法应该不可行。但是还有一些比较底层的C语言函数可以获取设备的信息,自己可以查查看。 还有一个办法就是调用其他软件的DLL。 参考技术B 操作系统版本,CPU,内存直接可以用API查,网卡比较麻烦一点。 参考技术C 这个应该有现成的库函数的,具体哪个我也不知道。

c语言如何获得文件当前路径?

获得不包含本程序名的双斜杠路径,并用windows 文件资源管理器打开此路径,求头文件,求代码

C语言里
在main函数的第二个参数里面,
保存着当前程序运行的目录
也就是argv[0]
main( int argc, char *argv[])

printf("%s ", argv[0] );

就是文件当前所在位置
不过需要注意的一点是
这个路径里面保存了当前文件的文件名
如果你只是需要路径的话还需要自己操作一下

main(int a,char *c[])

char s[100];
int i;
//把路径保存到字符串s里
strcpy(s,c[0]);
for(i=strlen(s); i>0 ; i--)
if( s[i] == '\\')

s[i]='\0';
break;

//找到最后一个 \ 并删除之后的内容
//最后输出的s,就是当前文件的路径了
puts(s);
参考技术A

http://hi.baidu.com/andywangcn/item/7633efda5517baf9ca0c39c6

获得双斜杠路径不包含文件名

TCHAR _szPath[MAX_PATH + 1]=0;
GetModuleFileName(NULL, _szPath, MAX_PATH);
(_tcsrchr(_szPath, _T('\\\\')))[1] = 0;//删除文件名,只获得路径 字串
CString strPath;
for (int n=0;_szPath[n];n++)

if (_szPath[n]!=_T('\\\\'))
   
strPath +=_szPath[n] ;

else
   
strPath += _T("\\\\\\\\");


MessageBox(strPath);//输出==e:\\\\program\\\\Debug\\\\
//头文件用到 windows.h

追问

编译过不去。。。。全是错误。。。。

追答#include <iostream>
#include <Windows.h>
#include <tchar.h>


#ifdef MAX_PATH
#undef MAX_PATH
#endif

#define MAX_PATH 256


using namespace std;

int main()

TCHAR _szPath[MAX_PATH + 1]=0;
//获取当前文件的位置
GetModuleFileName(NULL, _szPath, MAX_PATH);
  cout<<_szPath<<endl;
int i,pos;
//寻找最后一个'\\\\'
for (i=0;i<MAX_PATH;i++)

if (_szPath[i]=='\\\\')

pos = i;


_szPath[pos]='\\0';
cout<<_szPath<<endl;
return 0;

追问

用windows 文件资源管理器打开此路径呢?你这个运行后是单斜杠路径,没法用system打开windows 文件资源管理器的。。。这个方法我用c试过了,在main括号里填点东西就能输出路径,关键是如何用windows 文件资源管理器打开此路径

以上是关于windows下C/C++如何获得当前主机的信息:操作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率?的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何获得文件当前路径?

如何在windows上用C/C++进行OpenGL编程

Win7/Win8.1怎么快速获得Win10更新升级文件推送

如何获得C盘system32文件夹的权限啊,我要装AE破解 要改C/system/drivers/edc/host 这个文件 但是没有权限

c语言在windows下如何取得机器名

怎么手动添加/删除Windows7/xp服务