Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在WinRT、Windows8(10)应用程序中获取Windows版本_Vb.net_Windows_Windows Runtime_Windows 8.1_Windows 10 - Fatal编程技术网

Vb.net 在WinRT、Windows8(10)应用程序中获取Windows版本

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

问题很简单

我正在使用VB.Net开发Windows8.1(+10)应用程序

我想检测操作系统的版本是8.1还是10。甚至不想知道XP、7和8等其他版本

但是,
Environment.OsVersion
已被弃用

无法访问Windows8应用程序中的注册表(这是一项策略,即使可能)

无法生成自定义清单(已阻止)文件以检索版本信息

无法使用“Kernel32.dll”(策略问题)提取

如何在Windows8.1或Windows10应用商店中获取Windows版本

谢谢


追加:

  • 我想检索Windows版本(无论是8.1还是10)
  • 这对于操纵活动互动程序非常重要
  • 不改变批评行为或评论中提到的东西。 Windows metro应用程序在“开始”菜单中提供了稍微不同的固定瓷砖的方法,在不知道Windows版本的情况下处理瓷砖非常烦人。无论如何,这不是主要话题
  • Net或C#代码将不胜感激。 这不是“给我工作代码”的事情
  • 这个问题不只是我的问题, 这也是其他网站正在讨论的话题:
  • <> P>唯一的问题是,解决方案是基于C++或不适用于Windows 8.1(Metro App)。
    谢谢。

    您应该做的是检查新方法是否可用。如果它们可用,请使用它们,无论操作系统版本如何。例如:

    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