我需要播放PowerPoint幻灯片,但首先我想检查PowerPoint或查看器是否安装在机器上。我怎样才能使用.NET?如何检查机器上是否安装了PowerPoint或点阅读器?
回答
这取决于您是否试图判断您是否可以查看演示文稿(* .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对象模型,以防止恶意脚本的攻击。所以在任何情况下,都要有可靠的错误处理。
希望这会有所帮助!
事情随Office 2013发生了变化。如果用户从未安装过以前版本的Office,则该注册表项是PowerPoint 2013的“PowerPoint.Application.15”。我现在仍然在寻找解决此问题的良好解决方案,即Microsoft更改了注册表项名称。 – 2014-09-30 15:05:45
虽然我没有一个“干净”的系统来验证,但我只是说这似乎不太可能。总是存在特定于版本的ProgID(即PowerPoint.Application.15)和非特定于版本的ProgID(PowerPoint.Application),它们都指向相同的CLSID。 – Josh 2014-10-01 20:29:40
或许。我支持我们产品的使用者,他与我分享他的屏幕,以便我可以自己检查他的注册表。我们的测试看PPT是否安装失败,因为没有“PowerPoint.Application”键。该用户似乎没有将他的Office注册表条目弄乱的类型。我很想知道我错了。 – 2014-10-02 21:41:27
我不确定这是做到这一点的正确方法。但你可以使用这个
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");
}
我认为在引发错误时构建你的逻辑并不是最好的解决方案。 – 2010-01-02 10:18:43
我同意你的意见。 – Anuraj 2010-01-02 10:20:09
HKEY_CLASSES_ROOT \ MSPowerPoint \协议\ StdFileEditing \服务器
这关键是PowerPoint和点到安装目录为可执行文件运行PowerPoint都安装相同。在检测此产品是否已安装时非常适用,并且在安装未使用默认设置时很适合计算安装Office产品的文件夹。
事情随Office 2013发生了变化。似乎如果用户从未安装Office的以前版本,则注册表项是“ms-powerpoint”而不是“MSPowerPoint”。 – 2014-09-30 15:08:18
你的意思是包括可以打开powerpoint的开放式办公室或其他程序吗? – 2010-01-02 10:10:52
你喜欢asp.net还是c#.net给出明确的信息 – ratty 2010-01-02 10:24:37