我有一个我为Windows创建的应用程序:PC / Tablet 8.1,Mobile / Phone 8.1和UWP 10.
这是一个使用C#的WinRT应用程序。
要在应用中放置广告横幅,需要为每个操作系统制作单独的广告单元ID。
有没有办法确定当前使用的操作系统?
可以使用以下代码检查正在使用的设备:
#if WINDOWS_PHONE_APP
isWindowsPhoneApp = true;
#else
isWindowsPhoneApp = false;
#endif
但如何知道操作系统是Windows 8.1还是Windows 10?
更新:
我遇到了一篇关于获取C#/ XAML操作系统版本的有趣文章:
Windows Store Apps: Get OS Version, beginners tutorials (C#-XAML)
它使用System.Type.GetType检查Windows.System.Profile.AnalyticsVersionInfo是否返回null。
我修改并测试了代码,它似乎可以在Visual Studio模拟器和模拟器中工作。我无法测试Windows 8.1计算机,因为我使用的是Windows 10计算机,但对于Windows Phone 8.1和Windows 10 Mobile,它是准确的。我还没有在实际的手机设备上测试它。
因此,检查仅在Windows 10中可用的AnalyticsVersionInfo类型将返回true或false,具体取决于操作系统。
那么建议在发布版本中使用以下代码吗?
var analyticsVersionInfoType = Type.GetType("Windows.System.Profile.AnalyticsVersionInfo, Windows, ContentType=WindowsRuntime");
var isWindows10 = analyticsVersionInfoType != null;
displayTextBlock.Text = "Is Windows 10: " + isWindows10;
更新:
一衬垫:
var isWindows10 = Type.GetType("Windows.System.Profile.AnalyticsVersionInfo, Windows, ContentType=WindowsRuntime") != null;
答案 0 :(得分:0)
试试这个,我在https://msdn.microsoft.com/en-us/library/system.environment.osversion(v=vs.110).aspx
找到了它using System;
class Sample
{
public static void Main()
{
Console.WriteLine();
Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());
}
}
答案 1 :(得分:0)
您只需检查系统中是否存在仅在Windows 10中添加的类。
[DllImport("API-MS-WIN-CORE-WINRT-L1-1-0.DLL")]
private static extern int/* HRESULT */ RoGetActivationFactory([MarshalAs(UnmanagedType.HString)]string typeName, [MarshalAs(UnmanagedType.LPStruct)] Guid factoryIID, out IntPtr factory);
static bool IsWindows10()
{
IntPtr factory;
var IID_IActivationFactory = new Guid(0x00000035, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
var hr = RoGetActivationFactory("Windows.ApplicationModel.ExtendedExecution.ExtendedExecutionSession", IID_IActivationFactory, out factory);
if (hr < 0)
return false;
Marshal.Release(factory);
return true;
}
答案 2 :(得分:0)
switch (Environment.OSVersion.Platform)
{
case PlatformID.Unix:
//do android stuff
break;
case PlatformID.MacOSX:
//do apple stuff
break;
case PlatformID.Win32NT:
//do windows NT stuff
break;
case PlatformID.Win32Windows:
//do windows 95 and 98 stuff
break;
}