2010-01-02 60 views
2

我需要播放PowerPoint幻燈片,但首先我想檢查PowerPoint或查看器是否安裝在機器上。我怎樣才能使用.NET?如何檢查機器上是否安裝了PowerPoint或點閱讀器?

+0

你的意思是包括可以打開powerpoint的開放式辦公室或其他程序嗎? – 2010-01-02 10:10:52

+0

你喜歡asp.net還是c#.net給出明確的信息 – ratty 2010-01-02 10:24:37

回答

6

這取決於您是否試圖判斷您是否可以查看演示文稿(* .ppt,* .pptx等)或是否可以訪問PowerPoint對象模型。

要檢查是否有PPT文件相關的處理,你可以做到以下幾點:

// using Microsoft.Win32; 
private bool CheckPowerPointAssociation() { 
    var key = Registry.ClassesRoot.OpenSubKey(".ppt", false); 
    if (key != null) { 
     key.Close(); 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

if (CheckPowerPointAssociation()) { 
    Process.Start(pathToPPT); 
} 

要檢查的PowerPoint COM對象模型是否可用,您可以檢查以下注冊表項。

// using Microsoft.Win32; 
private bool CheckPowerPointAutomation() { 
    var key = Registry.ClassesRoot.OpenSubKey("PowerPoint.Application", false); 
    if (key != null) { 
     key.Close(); 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

if (CheckPowerPointAutomation()) { 
    var powerPointApp = new Microsoft.Office.Interop.PowerPoint.Application(); 
    .... 
} 

但是,請注意,在這兩種情況下,它只會給你一個很好的指示PowerPoint的可用性。例如,卸載可能沒有完全刪除所有的痕跡。另外,根據我的經驗,銷售Outlook插件多年來,我看到某些防病毒程序會干擾COM對象模型,以防止惡意腳本的攻擊。所以在任何情況下,都要有可靠的錯誤處理。

希望這會有所幫助!

+0

事情隨Office 2013發生了變化。如果用戶從未安裝過以前版本的Office,則該註冊表項是PowerPoint 2013的「PowerPoint.Application.15」。我現在仍然在尋找解決此問題的良好解決方案,即Microsoft更改了註冊表項名稱。 – 2014-09-30 15:05:45

+0

雖然我沒有一個「乾淨」的系統來驗證,但我只是說這似乎不太可能。總是存在特定於版本的ProgID(即PowerPoint.Application.15)和非特定於版本的ProgID(PowerPoint.Application),它們都指向相同的CLSID。 – Josh 2014-10-01 20:29:40

+0

或許。我支持我們產品的使用者,他與我分享他的屏幕,以便我可以自己檢查他的註冊表。我們的測試看PPT是否安裝失敗,因爲沒有「PowerPoint.Application」鍵。該用戶似乎沒有將他的Office註冊表條目弄亂的類型。我很想知道我錯了。 – 2014-10-02 21:41:27

0

我不確定這是做到這一點的正確方法。但你可以使用這個

try 
{ 
    //It will throw a WIN32 Exception if there is no associated 
    //application available to open the file. 
    Process p = Process.Start("C:\\Sample.pptx"); 
} 
catch (Win32Exception ex) 
{ 
    MessageBox.Show("Powerpoint or Powerpoint viewer not installed\n"); 
} 
+3

我認爲在引發錯誤時構建你的邏輯並不是最好的解決方案。 – 2010-01-02 10:18:43

+1

我同意你的意見。 – Anuraj 2010-01-02 10:20:09

0

怎麼樣檢查EXE文件的PowerPoint或PowerPoint查看器是否存在或不使用System.io命名空間的「存在方法」?

檢查this

+0

它會工作嗎?因爲用戶可以在他系統中的任何地方安裝應用程序。 – Anuraj 2010-01-02 10:26:23

1

HKEY_CLASSES_ROOT \ MSPowerPoint \協議\ StdFileEditing \服務器

這關鍵是PowerPoint和點到安裝目錄爲可執行文件運行PowerPoint都安裝相同。在檢測此產品是否已安裝時非常適用,並且在安裝未使用默認設置時很適合計算安裝Office產品的文件夾。

+0

事情隨Office 2013發生了變化。似乎如果用戶從未安裝Office的以前版本,則註冊表項是「ms-powerpoint」而不是「MSPowerPoint」。 – 2014-09-30 15:08:18

相關問題