2012-04-13 30 views
19

Tôi không thể tìm thấy bất kỳ thứ gì thực sự hiệu quả để phát hiện chính xác nền tảng (Windows/Linux/Mac) C# progrma của tôi đang chạy, đặc biệt trên Mac trả về Unix và không thể hầu như không bị phân biệt với nền tảng Linux!Làm thế nào để phát hiện đúng hệ điều hành Windows, Linux và Mac

Vì vậy, tôi đã thực hiện một cái gì đó ít lý thuyết hơn và thực tế hơn, dựa trên các đặc tính của Mac.

Tôi đăng mã làm việc làm câu trả lời. Xin vui lòng, bình luận nếu nó hoạt động tốt cho bạn quá/có thể được cải thiện.

Cảm ơn!

đáp ứng:

Dưới đây là đoạn code làm việc!

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; 
     } 
    } 
+0

Vâng tôi sẽ gửi câu trả lời trong 8 giờ khi tôi sẽ được phép làm như vậy :) – virrea

+3

Nếu bạn có mã làm việc, chỉnh sửa câu hỏi của bạn và đưa câu hỏi vào câu hỏi. –

+0

Vâng đó là những gì tôi đã làm :) Tại sao -1? – virrea

Trả lời

6

lẽ kiểm tra phương pháp IsRunningOnMac trong nguồn Pinta:

+1

Cảm ơn, có vẻ như sử dụng p/invoke. Nó sẽ làm việc mọi lúc hoặc có cơ hội đơn khiếu nại về điều đó? – virrea

Các vấn đề liên quan