MUtilities development repository
修订版 | 8ec1f693936828083ab538d6cb958b14bce8953a (tree) |
---|---|
时间 | 2021-12-25 08:04:23 |
作者 | ![]() |
Commiter | LoRd_MuldeR |
Small improvement in OS detection code.
@@ -277,20 +277,21 @@ static QReadWriteLock g_os_version_lock; | ||
277 | 277 | static const struct |
278 | 278 | { |
279 | 279 | MUtils::OS::Version::os_version_t version; |
280 | + bool checkBuildNo; | |
280 | 281 | const char friendlyName[64]; |
281 | 282 | } |
282 | 283 | g_os_version_lut[] = |
283 | 284 | { |
284 | - { MUtils::OS::Version::WINDOWS_WIN2K, "Windows 2000" }, //2000 | |
285 | - { MUtils::OS::Version::WINDOWS_WINXP, "Windows XP or Windows XP Media Center Edition" }, //XP | |
286 | - { MUtils::OS::Version::WINDOWS_XPX64, "Windows Server 2003 or Windows XP x64" }, //XP_x64 | |
287 | - { MUtils::OS::Version::WINDOWS_VISTA, "Windows Vista or Windows Server 2008" }, //Vista | |
288 | - { MUtils::OS::Version::WINDOWS_WIN70, "Windows 7 or Windows Server 2008 R2" }, //7 | |
289 | - { MUtils::OS::Version::WINDOWS_WIN80, "Windows 8 or Windows Server 2012" }, //8 | |
290 | - { MUtils::OS::Version::WINDOWS_WIN81, "Windows 8.1 or Windows Server 2012 R2" }, //8.1 | |
291 | - { MUtils::OS::Version::WINDOWS_WIN10, "Windows 10 or Windows Server 2016/2019" }, //10 | |
292 | - { MUtils::OS::Version::WINDOWS_WIN11, "Windows 11 or Windows Server 2022" }, //11 | |
293 | - { MUtils::OS::Version::UNKNOWN_OPSYS, "N/A" } | |
285 | + { MUtils::OS::Version::WINDOWS_WIN2K, 0, "Windows 2000" }, //2000 | |
286 | + { MUtils::OS::Version::WINDOWS_WINXP, 0, "Windows XP or Windows XP Media Center Edition" }, //XP | |
287 | + { MUtils::OS::Version::WINDOWS_XPX64, 0, "Windows Server 2003 or Windows XP x64" }, //XP_x64 | |
288 | + { MUtils::OS::Version::WINDOWS_VISTA, 0, "Windows Vista or Windows Server 2008" }, //Vista | |
289 | + { MUtils::OS::Version::WINDOWS_WIN70, 0, "Windows 7 or Windows Server 2008 R2" }, //7 | |
290 | + { MUtils::OS::Version::WINDOWS_WIN80, 0, "Windows 8 or Windows Server 2012" }, //8 | |
291 | + { MUtils::OS::Version::WINDOWS_WIN81, 0, "Windows 8.1 or Windows Server 2012 R2" }, //8.1 | |
292 | + { MUtils::OS::Version::WINDOWS_WIN10, 0, "Windows 10 or Windows Server 2016" }, //10 | |
293 | + { MUtils::OS::Version::WINDOWS_WIN11, 1, "Windows 11 or Windows Server 2022" }, //11 | |
294 | + { MUtils::OS::Version::UNKNOWN_OPSYS, 0, "N/A" } | |
294 | 295 | }; |
295 | 296 | |
296 | 297 | //OS version data dtructures |
@@ -315,7 +316,7 @@ namespace MUtils | ||
315 | 316 | const os_version_t WINDOWS_WIN80 = { OS_WINDOWS, 6, 2, 9200, 0 }; // 8 |
316 | 317 | const os_version_t WINDOWS_WIN81 = { OS_WINDOWS, 6, 3, 9600, 0 }; // 8.1 |
317 | 318 | const os_version_t WINDOWS_WIN10 = { OS_WINDOWS, 10, 0, 10240, 0 }; // 10 |
318 | - const os_version_t WINDOWS_WIN11 = { OS_WINDOWS, 10, 0, 20348, 0 }; // 11 | |
319 | + const os_version_t WINDOWS_WIN11 = { OS_WINDOWS, 10, 0, 22000, 0 }; // 11 | |
319 | 320 | |
320 | 321 | //Unknown OS |
321 | 322 | const os_version_t UNKNOWN_OPSYS = { OS_UNKNOWN, 0, 0, 0, 0 }; // N/A |
@@ -453,7 +454,7 @@ const char *MUtils::OS::os_friendly_name(const MUtils::OS::Version::os_version_t | ||
453 | 454 | for (size_t i = 0; g_os_version_lut[i].version.type != MUtils::OS::Version::OS_UNKNOWN; i++) |
454 | 455 | { |
455 | 456 | const MUtils::OS::Version::os_version_t &version = g_os_version_lut[i].version; |
456 | - if ((os_version.versionMajor == version.versionMajor) && (os_version.versionMinor == version.versionMinor) && (os_version.versionBuild >= version.versionBuild)) | |
457 | + if ((os_version.versionMajor == version.versionMajor) && (os_version.versionMinor == version.versionMinor) && ((!g_os_version_lut[i].checkBuildNo) || (os_version.versionBuild >= version.versionBuild))) | |
457 | 458 | { |
458 | 459 | friendly_name = g_os_version_lut[i].friendlyName; |
459 | 460 | } |
@@ -32,14 +32,14 @@ | ||
32 | 32 | <ProjectGuid>{B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}</ProjectGuid> |
33 | 33 | <Keyword>Win32Proj</Keyword> |
34 | 34 | <RootNamespace>MUtilitiesTest_VS2017</RootNamespace> |
35 | - <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> | |
35 | + <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion> | |
36 | 36 | <ProjectName>MUtilitiesTest</ProjectName> |
37 | 37 | </PropertyGroup> |
38 | 38 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
39 | 39 | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
40 | 40 | <ConfigurationType>Application</ConfigurationType> |
41 | 41 | <UseDebugLibraries>true</UseDebugLibraries> |
42 | - <PlatformToolset>v141_xp</PlatformToolset> | |
42 | + <PlatformToolset>v141</PlatformToolset> | |
43 | 43 | <CharacterSet>Unicode</CharacterSet> |
44 | 44 | </PropertyGroup> |
45 | 45 | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
@@ -133,6 +133,7 @@ | ||
133 | 133 | <AdditionalLibraryDirectories>$(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Shared\lib;$(SolutionDir)\..\Prerequisites\GoogleTest\lib\$(PlatformToolset)\Shared;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
134 | 134 | <AdditionalDependencies>notelemetry.obj;gtest.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies> |
135 | 135 | <ShowProgress>LinkVerboseLib</ShowProgress> |
136 | + <MinimumRequiredVersion>5.1</MinimumRequiredVersion> | |
136 | 137 | </Link> |
137 | 138 | </ItemDefinitionGroup> |
138 | 139 | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'"> |
@@ -160,6 +161,7 @@ | ||
160 | 161 | <AdditionalLibraryDirectories>$(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Static\lib;$(SolutionDir)\..\Prerequisites\GoogleTest\lib\$(PlatformToolset)\Static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
161 | 162 | <AdditionalDependencies>notelemetry.obj;gtest.lib;QtCore.lib;QtGui.lib;Ws2_32.lib;Winmm.lib;Imm32.lib;PowrProf.lib;Version.lib;Psapi.lib;Sensapi.lib;%(AdditionalDependencies)</AdditionalDependencies> |
162 | 163 | <ShowProgress>LinkVerboseLib</ShowProgress> |
164 | + <MinimumRequiredVersion>5.1</MinimumRequiredVersion> | |
163 | 165 | </Link> |
164 | 166 | </ItemDefinitionGroup> |
165 | 167 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |