title: How to detect properly Windows, Linux & Mac operating systems
body: <p>I could not found anything really efficient to detect correctly what platform (Windows / Linux / Mac) my C# progrma was running on, especially on Mac which returns Unix and can't hardly be differenciated with Linux platforms !</p>
  
  <p>So I made something less theoretical, and more practical, based on specificities of Mac.</p>
  
  <p>I'm posting the working code as an answer. Please, comment if it works well for you too / can be improved.</p>
  
  <p>Thanks !</p>
  
  <p><strong>Response :</strong></p>
  
  <p>Here is the working code !</p>
  
  <pre><code>    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")
                      &amp; Directory.Exists("/System")
                      &amp; Directory.Exists("/Users")
                      &amp; Directory.Exists("/Volumes"))
                      return Platform.Mac;
                  else
                      return Platform.Linux;
  
              case PlatformID.MacOSX:
                  return Platform.Mac;
  
              default:
                  return Platform.Windows;
          }
      }
  </code></pre>