首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何正确检测Windows、Linux和Mac操作系统

如何正确检测Windows、Linux和Mac操作系统
EN

Stack Overflow用户
提问于 2012-04-13 17:03:02
回答 2查看 11.7K关注 0票数 21

我找不到任何真正有效的方法来正确检测我的C#程序在什么平台上运行,特别是在Mac上,它返回Unix,几乎不能与Linux平台区分开来!

因此,我根据Mac的特性做了一些不太理想化,但更实用的东西。

我正在发布工作代码作为答案。请评论它是否也适用于您/是否可以改进。

谢谢!

响应:

这是工作代码!

代码语言:javascript
复制
    public enum Platform
    {
        Windows,
        Linux,
        Mac
    }

    public static Platform RunningPlatform()
    {
        switch (Environment.OSVersion.Platform)
        {
            case PlatformID.Unix:
                // Well, there are chances MacOSX is reported as Unix instead of MacOSX.
                // Instead of platform check, we'll do a feature checks (Mac specific root folders)
                if (Directory.Exists("/Applications")
                    & Directory.Exists("/System")
                    & Directory.Exists("/Users")
                    & Directory.Exists("/Volumes"))
                    return Platform.Mac;
                else
                    return Platform.Linux;

            case PlatformID.MacOSX:
                return Platform.Mac;

            default:
                return Platform.Windows;
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 19:50:57

也许可以查看Pinta源代码中的IsRunningOnMac方法:

票数 8
EN

Stack Overflow用户

发布于 2019-02-01 07:54:46

根据Environment.OSVersion Property page上的备注

Environment.OSVersion属性不提供标识确切操作系统及其版本的可靠方法。因此,我们不建议您使用此方法。相反:要识别操作系统平台,请使用RuntimeInformation.IsOSPlatform方法。

RuntimeInformation.IsOSPlatform满足了我的需求。

代码语言:javascript
复制
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
    // Your OSX code here.
}
elseif (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
    // Your Linux code here.
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10138040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档