C/C++ 获取系统版本

获取版本代码:

float getSysVersion(){

	float f_ret;

	typedef void(__stdcall*NTPROC)(DWORD*, DWORD*, DWORD*);
	DWORD dwMajor, dwMinor, dwBuildNumber;
	NTPROC proc = (NTPROC)GetProcAddress(
		LoadLibrary("ntdll.dll"),
		"RtlGetNtVersionNumbers"
	); proc(&dwMajor, &dwMinor, &dwBuildNumber); 

	// win 10
	if (dwMajor == 10 && dwMinor == 0){
		f_ret = dwMajor + dwMinor*0.1;
		return f_ret;
	}

	// win 8.1
	if (dwMajor == 6 && dwMinor == 3){
		f_ret = dwMajor + dwMinor*0.1;
		return f_ret;
	}

	// win 8.1 以下
	SYSTEM_INFO info;
	GetSystemInfo(&info);
	OSVERSIONINFOEX os;
	os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
	#pragma warning(disable:4996)
	if(GetVersionEx((OSVERSIONINFO *)&os)){
		f_ret = os.dwMajorVersion + os.dwMinorVersion*0.1;
	}
	
	return f_ret;
}

效果图:

获取 ReleaseId

string get_systemReleaseId(){
	
	string releaseId = "";
	HKEY hKey_return = NULL;
	char keyValue[256];
    DWORD keySzType;
    DWORD keySize;

	if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\",0,KEY_READ,&hKey_return)){
		cout << "RegOpenKeyEx failed." << endl;
		goto end;
	}
	
	if(ERROR_SUCCESS != RegQueryValueEx(hKey_return,"ReleaseId",0,&keySzType,(LPBYTE)&keyValue,&keySize)){
		cout << "RegQueryValueEx failed." << endl;
		goto end;
	}
	
	releaseId = keyValue;
	
end:
	return releaseId;
}


版权声明: 本博客,文章与代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!

警告:如果您恶意转载本人文章,则您的整站文章,将会变为我的原创作品,请相互尊重!
原文地址:https://www.cnblogs.com/LyShark/p/15019661.html