Windows获取本机计算机相关信息(C++)

1,963 阅读1分钟

头文件

#include "stdafx.h"
using namespace std;

class WindowsInfo
{
public:
	void getSystemVersion(); //获取系统版本
	std::wstring getCurrentComputerName(); //获取计算机名
	wchar_t* getWindowsEnvironmentPath(); //获取计算机环境变量
	std::wstring getCurrrentUserName(); //获取当前用户名
};

using namespace std;

实现

// WinInfo.cpp : 定义控制台应用程序的入口点。
// 获取Windows计算机相关信息
#include "stdafx.h"
#include "WinInfo.h"

using namespace std;

//获取系统版本号
void WindowsInfo::getSystemVersion()
{
	//LPOSVERSIONINFOW &p_Version = nullptr;
	OSVERSIONINFOEX os;   
	os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
	bool flag_Version = GetVersionEx((OSVERSIONINFO *)&os);
	if (flag_Version == 1)
	{	
		cout << "Windows主版本号:" <<  os.dwMajorVersion << " 子版本号:" << os.dwMinorVersion<< endl;
	}

	return;
}

//获取计算机系统名称
std::wstring WindowsInfo::getCurrentComputerName()
{
	const int MAX_BUFFER_LEN = 500;
	wchar_t  szBuffer[MAX_BUFFER_LEN];
	DWORD dwNameLen;
	dwNameLen = MAX_BUFFER_LEN;
	if (!GetComputerName(szBuffer, &dwNameLen)) 
	{
		cout << "获取计算机信息失败!" << endl;
		return L"";
	}
	else
	{
		std::wstring cur_ComputerName = L"";
		cur_ComputerName = szBuffer;
		return cur_ComputerName;
	}
	return L"";
}

//获取当前计算机环境变量
wchar_t*  WindowsInfo::getWindowsEnvironmentPath()
{
	// 加入环境变量
	wchar_t szPathEnv[4096] = {0};
	::GetEnvironmentVariableW(L"path", szPathEnv, 4096);
	return szPathEnv;
}

//获取系统用户名
std::wstring WindowsInfo::getCurrrentUserName()
{
	const int MAX_BUFFER_LEN = 500;
	wchar_t  szBuffer[MAX_BUFFER_LEN];
	DWORD dwNameLen;
	dwNameLen = MAX_BUFFER_LEN;
	::GetUserName(szBuffer, &dwNameLen);
	std::wstring cur_UserName = L"";
	cur_UserName = szBuffer;
	return cur_UserName;
}

int _tmain(int argc, _TCHAR* argv[])
{
	WindowsInfo * p_Win = new WindowsInfo();
	p_Win->getSystemVersion();
	std::wstring computername = p_Win->getCurrentComputerName();
	p_Win->getCurrrentUserName();
	delete p_Win;
	system("pause");
	return 0;
}