2012-08-23 110 views
2

我試圖檢測我們的應用程序是否從DVD運行(因爲這會禁用/啓用邏輯中的功能)。到目前爲止,我已經提出了下面的代碼片段,但似乎工作正常,但我真的想知道是否有最佳實踐來檢測此問題。如何檢測應用程序是否從DVD運行?

public static bool IsDVDInstallation() 
    { 
     try 
     { 
      string location = Assembly.GetExecutingAssembly().Location; 
      var info = new DriveInfo(Path.GetPathRoot(location)); 
      return info.DriveType == DriveType.CDRom; 
     } 
     catch 
     { 
      return false; 
     } 
    } 
+5

看起來不錯.... – DanielB

+0

爲什麼你需要檢測這個?你想寫文件的原因是什麼?然後檢查當前位置是否可寫。 –

+0

很好....... –

回答

7

如果您想知道應用程序(而不是您所在的任何特定組件)是否在光驅上運行,那麼您可能應該使用GetEntryAssembly()而不是GetExecutingAssembly()。除此之外,你的邏輯似乎是完全合理的。

爲什麼沉默catch塊?以前嘗試使用時是否遇到異常?即使你這樣做了,你也應該捕捉到你知道如何處理而不是一切的例外情況。

+0

EntryAssembly的好處!你也是對的。非常感謝。 –

1

您的解決方案大致如實。但是,如果從虛擬DVD驅動器運行(我假設你不想要),它仍然可以工作

在這種情況下,您必須查詢WMI以獲取有關硬件的更多信息,是真實的或者不真實 - 但這也不是安全的選擇,所以你現有的解決方案應該覆蓋你,除了知道自己在做什麼的高級用戶(無論如何你不會做太多的事)

相關問題