1

Тема: Як надійно задетектети windows у .NET ?

Environment.OSVersion.Platform.Equals("Win32NT");

з незрозумілого мені приколу, видає False

Подякували: 0xDADA11C71

2

Re: Як надійно задетектети windows у .NET ?

А яке значення на вашій системі має змінна Environment.OSVersion.Platform?
Я знайшов отакий код, може це вам якось допоможе:

// This example demonstrates the PlatformID enumeration.
using System;

class Sample
{
    public static void Main()
    {
    string msg1 = "This is a Windows operating system.";
    string msg2 = "This is a Unix operating system.";
    string msg3 = "ERROR: This platform identifier is invalid.";

// Assume this example is run on a Windows operating system.

    OperatingSystem os = Environment.OSVersion;
    PlatformID     pid = os.Platform;
    switch (pid)
        {
        case PlatformID.Win32NT:
        case PlatformID.Win32S:
        case PlatformID.Win32Windows:
        case PlatformID.WinCE:
            Console.WriteLine(msg1);
            break;
        case PlatformID.Unix:
            Console.WriteLine(msg2);
            break;
        default:
            Console.WriteLine(msg3);
            break;
        }
    }
}
/*
This example produces the following results:

This is a Windows operating system.
*/
Подякували: cheappi386, leofun012

3 Востаннє редагувалося cheappi386 (13.01.2022 15:46:24)

Re: Як надійно задетектети windows у .NET ?

Я чомусь подумав що там string коли насправді enum.І дійсно так

Environment.OSVersion.Platform == PlatformID.Win32NT;

все ок

Подякували: 0xDADA11C71

4

Re: Як надійно задетектети windows у .NET ?

cheappi386 написав:

Я чомусь подумав що там string коли насправді enum.І дійсно так

Environment.OSVersion.Platform == PlatformID.Win32NT;

все ок

Ось чому я не люблю юзати Equals
Якщо б я писав в коді

Environment.OSVersion.Platform == "Win32NT"

то відразу б отримав помилку невідповідності типів і все би стало ясно в 5 секунд

Подякували: 0xDADA11C71