Vb.net 在WinRT、Windows8(10)应用程序中获取Windows版本
问题很简单 我正在使用VB.Net开发Windows8.1(+10)应用程序 我想检测操作系统的版本是8.1还是10。甚至不想知道XP、7和8等其他版本 但是,Vb.net 在WinRT、Windows8(10)应用程序中获取Windows版本,vb.net,windows,windows-runtime,windows-8.1,windows-10,Vb.net,Windows,Windows Runtime,Windows 8.1,Windows 10,问题很简单 我正在使用VB.Net开发Windows8.1(+10)应用程序 我想检测操作系统的版本是8.1还是10。甚至不想知道XP、7和8等其他版本 但是,Environment.OsVersion已被弃用 无法访问Windows8应用程序中的注册表(这是一项策略,即使可能) 无法生成自定义清单(已阻止)文件以检索版本信息 无法使用“Kernel32.dll”(策略问题)提取 如何在Windows8.1或Windows10应用商店中获取Windows版本 谢谢 追加: 我想检索Window
Environment.OsVersion
已被弃用
无法访问Windows8应用程序中的注册表(这是一项策略,即使可能)
无法生成自定义清单(已阻止)文件以检索版本信息
无法使用“Kernel32.dll”(策略问题)提取
如何在Windows8.1或Windows10应用商店中获取Windows版本
谢谢
追加:
谢谢。您应该做的是检查新方法是否可用。如果它们可用,请使用它们,无论操作系统版本如何。例如:
if (Windows.Foundation.Metadata.ApiInformation.IsMethodPresent("Windows.UI.ViewManagement.ApplicationView", "TryEnterFullScreenMode"))
{
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
}
我没有找到任何其他方法来做这件事,所以我的方法是这样的。(它是用C#编写的,但您可以轻松地将其转换为Visual Basic) 以下属性检测Windows 10(包括Windows 10 Mobile)设备上是否正在运行Windows 8.1或Windows Phone 8.1应用程序 它是如何工作的? 在Windows 8.1中,
包
类有一个显示名
属性,而Windows Phone 8.1没有该属性。
在Windows Phone 8.1中,DisplayInformation
类有一个RawPixelsPerViewPixel
属性,而Windows 8.1没有该属性。
Windows 10(包括Mobile)具有这两个属性。这就是我们可以检测应用程序运行在哪个操作系统上的方法。程序不应根据操作系统版本号改变其行为。这是兼容性错误的最大来源。你想知道什么?它是用于遥测还是其他什么?你能详细说明一下这会如何影响你如何操作活动磁砖吗?@RaymondChen有两种不同的东西。第一。Windows8.1始终在左下角的辅助分幅上显示一个小图标,而Windows10则不显示。当我创建二次瓦片作为图像时,我想考虑图标的空间。第二“RequestCreateAync”方法在Windows10上不需要任何提示,而“RequestCreateAync”在Windows8.1中始终显示一个提示,在BackgroundWorks上运行时会导致崩溃。“RealestCeReFieldStudioAssic”是一种替代方法,旨在向用户显示提示。不能在Windows8.1上工作。@在Windows10之前的klados中,您必须在try/catch中调用该方法。如果不支持该方法,则会出现异常。不太好,因为除了尝试调用一个方法外,无法确定该方法是否受支持。
#region IsWindows10
static bool? _isWindows10;
public static bool IsWindows10 => (_isWindows10 ?? (_isWindows10 = getIsWindows10Sync())).Value;
static bool getIsWindows10Sync()
{
bool hasWindows81Property = Windows.ApplicationModel.Package.Current.GetType().GetRuntimeProperties().Any(r => r.Name == "DisplayName");
bool hasWindowsPhone81Property = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().GetType().GetRuntimeProperties().Any(r => r.Name == "RawPixelsPerViewPixel");
bool isWindows10 = hasWindows81Property && hasWindowsPhone81Property;
return isWindows10;
}
#endregion