`

C/C++获得windows版本

 
阅读更多
MSDN上有详细介绍,做个标记:
  #include <windows.h>
  #include <stdio.h>
  
  void main()
  {
      OSVERSIONINFO osvi;
      BOOL bIsWindowsXPorLater;
  
      ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
      osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  
      GetVersionEx(&osvi);
  
      bIsWindowsXPorLater = 
         ( (osvi.dwMajorVersion > 5) ||
         ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));
  
      if(bIsWindowsXPorLater)
          printf("The system meets the requirements.\n");
      else printf("The system does not meet the requirements.\n");
  }


Operating System Version (Windows)
Operating system         Version number
Windows 8                 6.2
Windows Server 2012         6.2
Windows 7                 6.1
Windows Server 2008 R2         6.1
Windows Server 2008         6.0
Windows Vista               6.0
Windows Server 2003 R2         5.2
Windows Server 2003         5.2
Windows XP 64-Bit Edition 5.2
Windows XP                 5.1
Windows 2000                 5.0

http://msdn.microsoft.com/ZH-CN/library/windows/desktop/ms724832(v=vs.85).aspx


//使用控制台打开另外的程序,并把控制台隐藏掉
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )

#include <Windows.h>
int main()
{
/*以下启动另一exe*/
SHELLEXECUTEINFO  ShExecInfo; 
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); 
ShExecInfo.fMask     = NULL; 
ShExecInfo.hwnd      = NULL; 
ShExecInfo.lpVerb    = NULL; 
ShExecInfo.lpFile    = ("E:\\Work_Project\\ParaExe\\ParaExe\\bin\\Debug\\ParaExe.exe");
ShExecInfo.lpParameters = NULL; 
ShExecInfo.lpDirectory     = NULL; 
ShExecInfo.nShow           = SW_MAXIMIZE;
ShExecInfo.hInstApp = NULL; 
ShellExecuteEx(&ShExecInfo); 

    /*以下检测插件安装情况*/

return 0;
}



// ChooseExeVersion.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )

typedef struct ExeOsPair_tag
{
	char osVersion[300];
	char exeVersion[300];
}ExeOsPair;

ExeOsPair g_exeOsPairs[100];
int g_exeOsPairsSize = 0;

int AddExeOsParis(const char *osVersion, const char* exeVersion)
{
	strcpy(g_exeOsPairs[g_exeOsPairsSize].exeVersion, exeVersion);
	strcpy(g_exeOsPairs[g_exeOsPairsSize].osVersion, osVersion);
	g_exeOsPairsSize++;
	return 0;
}

//int _tmain(int argc, _TCHAR* argv[])
int main()
{
	/*****************************************************/
	//add new exe and os pairs here
	/*
		Operating System Version (Windows): 
		http://msdn.microsoft.com/ZH-CN/library/windows/desktop/ms724832(v=vs.85).aspx

		Operating system			Version number
		Windows 8					6.2
		Windows Server 2012			6.2
		Windows 7					6.1
		Windows Server 2008 R2		6.1
		Windows Server 2008			6.0
		Windows Vista				6.0
		Windows Server 2003 R2		5.2
		Windows Server 2003			5.2
		Windows XP					5.1
		Windows 2000				5.0
	*/

	AddExeOsParis("6.1", "notepad.exe f:\\调用程序.txt");
	AddExeOsParis("6.0", "2.exe");
	AddExeOsParis("5.1", "3.exe");
	/*****************************************************/

	OSVERSIONINFO osvi;
	BOOL bIsWindowsXPorLater;

	ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

	if (GetVersionEx(&osvi) == 0)
	{
		printf("Error: %d\n", GetLastError());
		return -1;
	}

	char osVersion[100];
 	sprintf(osVersion, "%d.%d", osvi.dwMajorVersion, osvi.dwMinorVersion);

#ifdef _DEBUG
	printf("Version is %d.%d (%d)\n", 
		osvi.dwMajorVersion,
		osvi.dwMinorVersion,
		osvi.dwBuildNumber);
#endif

	for (int i = 0; i< g_exeOsPairsSize; ++i)
	{
		if (strcmp(g_exeOsPairs[i].osVersion, osVersion) == 0)
		{
			WinExec(g_exeOsPairs[i].exeVersion, SW_SHOW);
			break;
		}
	}
	
	return 0;
}
分享到:
评论

相关推荐

    C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改 示例demo

    C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改 示例demo https://blog.csdn.net/qq_29542611/article/details/103756071

    eclipse 开发c/c++

    C 和 C++ 语言都是世界上最流行且使用最普遍的编程语言, 因此 Eclipse 平台(Eclipse Platform)提供对 C/C++ 开发的支持一点都不足为奇。 因为 Eclipse 平台只是用于开发者工具的一个框架,它不直接支持 C/C++;它...

    天书夜读-从汇编语言到Windows内核编程

    读者在使用c/c++开发windows程序的基础上,将熟练掌握汇编和c语言的应用,深入了解windows底层,并掌握阅读windows内核的基本方法,以及windows内核的基本编程方法。 本书适合使用c/c++在windows上编程的读者,尤其...

    《天书夜读》从汇编语言到windows内核编程

    读者在使用c/c++开发windows程序的基础上,将熟练掌握汇编和c语言的应用,深入了解windows底层,并掌握阅读windows内核的基本方法,以及windows内核的基本编程方法。  本书适合使用c/c++在windows上编程的读者,...

    [天书夜读-从汇编语言到Windows内核编程]

    读者在使用c/c++开发windows程序的基础上,将熟练掌握汇编和c语言的应用,深入了解windows底层,并掌握阅读windows内核的基本方法,以及windows内核的基本编程方法。  本书适合使用c/c++在windows上编程的读者,...

    天书夜读:从汇编语言到Windows内核编程

    读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。 本书适合使用C/C++在Windows上编程的读者,尤其...

    天书夜读-从汇编语言到Windows内核编程

    读者在使用c/c++开发windows程序的基础上,将熟练掌握汇编和c语言的应用,深入了解windows底层,并掌握阅读windows内核的基本方法,以及windows内核的基本编程方法。 本书适合使用c/c++在windows上编程的读者,尤其...

    天书夜读_从汇编语言到Windows内核编程

    读者在使用c/c++开发windows程序的基础上,将熟练掌握汇编和c语言的应用,深入了解windows底层,并掌握阅读windows内核的基本方法,以及windows内核的基本编程方法。  本书适合使用c/c++在windows上编程的读者,...

    天书夜读——从汇编语言到Windows内核编程

    读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。  本书适合使用C/C++在Windows上编程的读者,...

    天书夜读 - 从汇编语言到 Windows 内核编程

    读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。 本书适合使用C/C++在Windows上编程的读者,尤其...

    从汇编语言到.Windows.内核编程

    读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。 本书适合使用C/C++在Windows上编程的读者,尤其...

    天书夜读 从汇编语言到windows内核编程

    读者在使用c/c++开发windows程序的基础上,将熟练掌握汇编和c语言的应用,深入了解windows底层,并掌握阅读windows内核的基本方法,以及windows内核的基本编程方法。 本书适合使用c/c++在windows上编程的读者,尤其...

    [天书夜读-从汇编语言到Windows内核编程].谭文.邵坚磊.扫描版

    读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。 本书适合使用C/C++在Windows上编程的读者,尤其...

    天书夜读-从汇编语言到windows内核编程.

    读者在使用C/C++ 开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及 Windows内核的基本编程方法。 本书适合使用C/C++在Windows上编程的读者,...

    直接的UI库。-C/C++开发

    Zaf具有以下功能:采用现代C ++技术,例如智能指针和lambda express简介Zaf是基于Windows本机API的UI库,旨在构建一个简单而有效的开发框架。 Zaf具有以下功能:采用现代C ++技术,例如智能指针和lambda表达式。 ...

    天书夜读(反汇编).

    读者在使用C/C++ 开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及 Windows内核的基本编程方法。 本书适合使用C/C++在Windows上编程的读者,...

    C / C ++代码的静态分析-C/C++开发

    Cppcheck Linux构建状态Windows构建状态Coverity扫描构建状态捐赠如果发现Cppcheck对您有用,请随时使用Cppcheck GitHub Actions Linux构建状态Windows构建状态OSS-Fuzz Coverity扫描构建状态许可证关于该程序的原始...

Global site tag (gtag.js) - Google Analytics