Advertisement
djhonga2001

Untitled

Apr 24th, 2016
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. bool GetWindowsVersionName(std::string* out)
  2. {
  3. if (!out) return false;
  4.  
  5. *out = "Microsoft ";
  6.  
  7. BYTE dwType = GetProductType();
  8. DWORD dwSubType = 0;
  9.  
  10. SYSTEM_INFO si;
  11. ZeroMemory(&si, sizeof(SYSTEM_INFO));
  12. GetNativeSystemInfo(&si);
  13.  
  14. if (EqualsMajorVersion(6) && EqualsMinorVersion(3))
  15. {
  16. MyGetProductInfo(6, 3, 0, 0, &dwSubType);
  17.  
  18. if (dwType == VER_NT_WORKSTATION)
  19. {
  20. out->append("Windows 8.1");
  21. if (dwSubType == PRODUCT_PROFESSIONAL)
  22. out->append(" Pro");
  23. }
  24. else if (dwType == VER_NT_SERVER)
  25. {
  26. out->append("Windows Server 2012 R2");
  27. }
  28. }
  29. else if (EqualsMajorVersion(6) && EqualsMinorVersion(2))
  30. {
  31. MyGetProductInfo(6, 2, 0, 0, &dwSubType);
  32.  
  33. if (dwType == VER_NT_WORKSTATION)
  34. {
  35. out->append("Windows 8");
  36. if (dwSubType == PRODUCT_PROFESSIONAL)
  37. out->append(" Pro");
  38. }
  39. else if (dwType == VER_NT_SERVER)
  40. {
  41. out->append("Windows Server 2012");
  42. }
  43. }
  44. else // older than Windows 8 use GetVersionExA
  45. {
  46. OSVERSIONINFOEX osvi;
  47. ZeroMemory(&osvi, sizeof(OSVERSIONINFOEXA));
  48. osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
  49. MyGetVersionExA(&osvi);
  50.  
  51. if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
  52. {
  53. MyGetProductInfo(6, 1, 0, 0, &dwSubType);
  54.  
  55. if (dwType == VER_NT_WORKSTATION)
  56. out->append("Windows 7");
  57. else out->append("Windows Server 2008 R2");
  58.  
  59. switch (dwSubType)
  60. {
  61. case PRODUCT_ULTIMATE:
  62. out->append(" Ultimate Edition");
  63. break;
  64. case PRODUCT_PROFESSIONAL:
  65. out->append(" Professional");
  66. break;
  67. case PRODUCT_HOME_PREMIUM:
  68. out->append(" Home Premium Edition");
  69. break;
  70. case PRODUCT_HOME_BASIC:
  71. out->append(" Home Basic Edition");
  72. break;
  73. case PRODUCT_ENTERPRISE:
  74. out->append(" Enterprise Edition");
  75. break;
  76. case PRODUCT_BUSINESS:
  77. out->append(" Business Edition");
  78. break;
  79. case PRODUCT_STARTER:
  80. out->append(" Starter Edition");
  81. break;
  82. }
  83. }
  84. else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
  85. {
  86. if (dwType == VER_NT_WORKSTATION)
  87. out->append("Windows Vista");
  88. else out->append("Windows Server 2008");
  89. }
  90. else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
  91. {
  92.  
  93. if (GetSystemMetrics(SM_SERVERR2))
  94. out->append("Windows Server 2003 R2");
  95. else if (osvi.wSuiteMask & VER_SUITE_STORAGE_SERVER)
  96. out->append("Windows Storage Server 2003");
  97. else if (osvi.wSuiteMask & VER_SUITE_WH_SERVER)
  98. out->append("Windows Home Server");
  99. else if (osvi.wProductType == VER_NT_WORKSTATION &&
  100. si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
  101. {
  102. out->append("Windows XP Professional x64 Edition");
  103. }
  104. else out->append("Windows Server 2003 ");
  105. }
  106. else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
  107. {
  108. out->append("Windows XP");
  109. if (osvi.wSuiteMask & VER_SUITE_PERSONAL)
  110. out->append(" Home Edition");
  111. else out->append(" Professional");
  112. }
  113.  
  114. }
  115. if (EqualsMajorVersion(6))
  116. {
  117. if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
  118. out->append(" (x64)");
  119. else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
  120. out->append(" (x86)");
  121. }
  122.  
  123. return true;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement