如何在不使用Registry的情况下确定Acrobat Reader版本

时间:2017-02-08 09:08:24

标签: c# .net

我知道安装了Acrobat阅读器,但我想知道安装了哪个版本的acrobat? 但是没有使用注册表项。 有任何Acrobat阅读器功能可以获得它吗?

提前致谢

我使用了以下代码,但在某些地方抛出异常

RegistryKey adobe = Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe");
        if (adobe != null)
        {
            RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader");
            if (acroRead != null)
            {
                string[] acroReadVersions = acroRead.GetSubKeyNames();

                string versionNos = "";
                string ResultAcrobat ="";
                foreach (string versionNumber in acroReadVersions)
                {
                    if (Convert.ToDecimal(versionNumber) >= 9)
                    {
                        ResultAcrobat = "OK";
                    }
                    versionNos += ",Version v" + versionNumber;
                }
                versionNos = versionNos.Remove(0, 1);
                AcrobatReader = versionNos;

                if (Convert.ToString(dr["ResultAcrobat"]) == "")
                {
                    ResultAcrobat = "Error";

                }

            }

1 个答案:

答案 0 :(得分:0)

当然,但它比阅读注册表(它保持实际应用程序被打开)更加骇人听闻。

如果您无法阅读注册表,我的建议是:

  • 在我的案例AcroRd32.exe下找到程序文件文件夹中的所有文件名C:\Program Files (x86)\Adobe;
  • 从使用此代码找到的可执行文件中获取文件版本:

    string[] files = Directory.GetFiles(@"C:\Program Files (x86)\Adobe", "AcroRd32.exe", SearchOption.AllDirectories);
    
    // determine which one to use
    string pathToAdobeExe = files.First();
    
    string version = FileVersionInfo.GetVersionInfo(pathToAdobeExe).ProductVersion;