如何在 UWP 应用程序(C# 或 WinJS)中获取 Windows 10 版本(例如 1809、1903、1909 等)?
How to get Windows 10 version (e.g. 1809, 1903, 1909, ...) in a UWP app (C# or WinJS)?
我阅读了很多 Whosebug post,但没有解决我的问题的方法。
我想在 C# 或 WinJS 中获取 运行 Windows 10 安装的版本号(例如 1809 或 1909)
我用 Cordova (Javascript) 开发了一个 UWP 应用程序,我在 C# 中也有一个 Cordova 插件 (winmd),我可以使用它,但是没有 api 来获取这个 4 位版本号。
我有一个 WinJS/Javascript 代码,在版本 1903 之前都可以正常工作:
var ApiInformation = Windows.Foundation.Metadata.ApiInformation;
if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 9)) {
return 9999; // TODO: fix this build number, when it is released
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 8)) {
return 1903;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 7)) {
return 1809;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 6)) {
return 1803;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 5)) {
return 1709
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 4)) {
return 1703;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 3)) {
return 1607;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 2)) {
return 1511;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 1)) {
return 1507;
} else {
return 0;
}
但是因为Windows10 1909只是一个bugfix版本,没有自己的SDK,所以也没有新的UniversalApiContract版本。因此,在 Windows 1909 安装中,检查 UniversalApiContract "9" returns "false" 等 returns "1903" 而不是 "1909"。
是否有一些开发人员在 1909 版中发现了 1909 版的新内容或独有内容,因此我们可以检查一下并说这是 1909 版?
重要提示:我正在开发一个 UWP 应用程序并且 Windows 有一个 UWP 应用程序的沙箱概念,所以有一些限制,例如UWP 应用无法访问 注册表 或整个文件系统。
[更新]
谢谢彼得!现在可以使用了。
我在 UWP Cordova WinJS/Javascript 中使用此代码:
var v = Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamilyVersion;
var major = (v & 0xFFFF000000000000) >> 48;
var minor = (v & 0x0000FFFF00000000) >> 32;
var build = (v & 0x00000000FFFF0000) >> 16;
var release = v & 0x000000000000FFFF;
if (build == 18363)
return 1909;
if (build == 18362)
return 1903;
我不得不使用 Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamilyVersion,因为 Windows.System.Profile.AnalyticsVersionInfo.deviceFamilyVersion 是 "undefined" 的提示"Permission denied"?但是上面的代码有效。
您可以使用AnalyticsInfo.VersionInfo.DeviceFamilyVersion
获取版本号。
属性是一个包含一些数字的字符串。将字符串解析为 32 位数字,然后该 32 位数字的每个字节构成标准 A.B.C.D
版本的一部分。
我阅读了很多 Whosebug post,但没有解决我的问题的方法。 我想在 C# 或 WinJS 中获取 运行 Windows 10 安装的版本号(例如 1809 或 1909) 我用 Cordova (Javascript) 开发了一个 UWP 应用程序,我在 C# 中也有一个 Cordova 插件 (winmd),我可以使用它,但是没有 api 来获取这个 4 位版本号。
我有一个 WinJS/Javascript 代码,在版本 1903 之前都可以正常工作:
var ApiInformation = Windows.Foundation.Metadata.ApiInformation;
if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 9)) {
return 9999; // TODO: fix this build number, when it is released
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 8)) {
return 1903;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 7)) {
return 1809;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 6)) {
return 1803;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 5)) {
return 1709
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 4)) {
return 1703;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 3)) {
return 1607;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 2)) {
return 1511;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 1)) {
return 1507;
} else {
return 0;
}
但是因为Windows10 1909只是一个bugfix版本,没有自己的SDK,所以也没有新的UniversalApiContract版本。因此,在 Windows 1909 安装中,检查 UniversalApiContract "9" returns "false" 等 returns "1903" 而不是 "1909"。
是否有一些开发人员在 1909 版中发现了 1909 版的新内容或独有内容,因此我们可以检查一下并说这是 1909 版?
重要提示:我正在开发一个 UWP 应用程序并且 Windows 有一个 UWP 应用程序的沙箱概念,所以有一些限制,例如UWP 应用无法访问 注册表 或整个文件系统。
[更新] 谢谢彼得!现在可以使用了。
我在 UWP Cordova WinJS/Javascript 中使用此代码:
var v = Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamilyVersion;
var major = (v & 0xFFFF000000000000) >> 48;
var minor = (v & 0x0000FFFF00000000) >> 32;
var build = (v & 0x00000000FFFF0000) >> 16;
var release = v & 0x000000000000FFFF;
if (build == 18363)
return 1909;
if (build == 18362)
return 1903;
我不得不使用 Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamilyVersion,因为 Windows.System.Profile.AnalyticsVersionInfo.deviceFamilyVersion 是 "undefined" 的提示"Permission denied"?但是上面的代码有效。
您可以使用AnalyticsInfo.VersionInfo.DeviceFamilyVersion
获取版本号。
属性是一个包含一些数字的字符串。将字符串解析为 32 位数字,然后该 32 位数字的每个字节构成标准 A.B.C.D
版本的一部分。