using System; using System.IO; using System.Linq; using System.Reflection; namespace ScreenConnect; public static class EnvironmentInfo { private static EnvironmentFlags current; public static EnvironmentFlags Current { get { if (current == EnvironmentFlags.UnknownRuntime) { current = GetCurrent(); } return current; } } private static EnvironmentFlags GetCurrent() { if (Environment.GetEnvironmentVariable("RoleRoot") != null || (from _ in AppDomain.CurrentDomain.GetAssemblies() where _.GetName().Name == "ScreenConnect.Cloud" select _).Any()) { return EnvironmentFlags.FullMicrosoftClr | EnvironmentFlags.FullWindows | EnvironmentFlags.AzureCloud; } if ((object)Type.GetType("Mono.Runtime") == null) { return EnvironmentFlags.FullMicrosoftClr | EnvironmentFlags.FullWindows; } if (Directory.Exists("/System/Library")) { return EnvironmentFlags.Mono | EnvironmentFlags.OSX; } return EnvironmentFlags.Mono | EnvironmentFlags.Linux; } }