使用前检查是否安装了 Adob​​e Reader

Check if Adobe Reader is installed before using it

我希望能够让我的应用程序检查是否安装了 Adob​​e Reader。 如果是,我希望我的程序使用它来显示 PDF,如果不是,我想使用我的免费(有限)reader 控件来显示 PDF。

有什么建议

编辑: 我的问题似乎有点太广泛了 所以基本上我正在尝试执行以下操作

Try
   Dim AcroDisplay As New AxAcroPDFLib.AxAcroPDF

   AcroDisplay.Left = 50
   AcroDisplay.Top = 50
   AcroDisplay.Width = 200
   AcroDisplay.Height = 500
   me.Controls.Add(AcroDisplay)
   MsgBox("Acro Added")
Catch ex As Exception
   MsgBox("Acro Not installed")
   ''Load Alternate PDF viewer (Spire.pdf Free)
End Try

但是,如果未安装 Acrobat 而不是转到 catch 语句,它只会显示错误 "Could not load assembly",然后退出子程序

我想要的是,如果未安装 acrobat 控件,它将不会显示和出错,而只是加载备用 pdf 查看器

有没有办法在尝试加载之前检查 AxAcroPDFLib.AxAcroPDF?

希望这能让事情变得更清楚

编辑 2: 在搜索和搞砸之后,我发现了 2 种可能的方法我可以做到这一点 但是我在 VB.net

中都找不到如何操作

首先 在可用命名空间中查找 AxAcroPDFLib.AxAcroPDF 找到了 C# 示例,但我不知道如何将其更改为 Vb.net C# - How to check if namespace, class or method exists in C#??

第二个 添加未处理的异常处理程序 还找到了一些示例,但 none 似乎有效

任何人都可以指导我为这些选项中的一个(或两个)提供一个工作示例

设法找到了一个可行的解决方案,但与我最初的想法不符,但它确实工作得很好

我使用了下面的代码

    Dim AdobeSoftwares As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ADOBE")
    If AdobeSoftwares Is Nothing Then
        'MessageBox.Show("No Adobe Software")
        Dim PdfDisplay As New PdfiumViewer.PdfViewer 
        PDFControl = "Pdfium"
    Else
        If Not Array.IndexOf(AdobeSoftwares.GetSubKeyNames, "Acrobat Reader") = -1 Then
            'MessageBox.Show("Adobe Reader Installed")
            Dim PdfDisplay As New AxAcroPDFLib.AxAcroPDF
            PDFControl = "Acrobat"
        Else
            'MessageBox.Show("Adobe Reader Not Installed")
            Dim PdfDisplay As New PdfiumViewer.PdfViewer
            PDFControl = "Pdfium"
        End If
    End If

然后在我的显示代码中,我只查看正在使用的 "PDFControl" 和 运行 在该显示中显示的相关代码

所以现在如果安装了 adobe reader,我将使用它的控件,如果没有安装,我将使用免费(但功能较少)的控件来显示 PDF 文件 所以希望如果其他人正在考虑做与我类似的事情,那么他们可以