【问题标题】:Process.Start(/* path to pdf */) doesn't work with Adobe Reader on Windows 8Process.Start(/* path to pdf */) 不适用于 Windows 8 上的 Adob​​e Reader
【发布时间】:2014-07-09 19:27:54
【问题描述】:

我可以在我的 C#/WPF 应用程序中创建 PDF 并使用以下命令运行它们:

Process.Start(_pathToPDFFile);

这适用于 Adob​​e Acrobat,但不适用于 Adob​​e Reader。安装 Adob​​e Reader 后,Process.Start() 不会执行任何操作,除非 Reader 进程已在任务管理器中运行。

当我尝试启动 PDF 时,如何让 Adob​​e Reader 显示 PDF?

【问题讨论】:

  • 它会在“TIFKAM 屏幕”中偷偷打开它吗?您能否从注册表中获取 Adob​​e Reader 程序的路径并在Process.Start 中明确使用它? Adobe Reader Command Line Reference Q on Stack Overflow.
  • 在构建 PC 上完全相同的问题。您是否找到了解决方案?
  • 不,从来没有。我早就离开那家公司了。

标签: c# process.start adobe-reader


【解决方案1】:

在我们的例子中,这个问题只有在从 Visual Studio 启动应用程序时才会重现 - 直接启动 .exe 会按预期工作。

经过一些调试,结果发现 Visual Studio 设置为始终以管理员身份运行,这导致了问题。关闭此功能 (which is hard enough itself) 可解决此问题。

但仍然不确定为什么会发生这种情况。

【讨论】:

    【解决方案2】:

    也许可以尝试这样的事情?我尝试使用 Adob​​e Reader 11 在 Windows 8 上编写代码,这对我来说似乎工作正常。也许有问题的机器上还有其他问题?

    var process = new Process();
    process.StartInfo = new ProcessStartInfo(@"Path to your PDF.pdf");
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.UseShellExecute = true;
    process.Start();
    

    【讨论】:

    • 我在 www 上搜索了 2 个小时。没有什么对我有用,只是打开一个pdf文件....直到我找到这个! TY先生,TY太棒了!
    【解决方案3】:

    这就是我的做法,可能有一种方法可以从注册表中恢复 AcroRd32.exe 的确切路径:

    String pathToAcroRd32 = Environment.GetEnvironmentVariable("ProgramFiles") + ((Environment.Is64BitOperatingSystem) ? @" (x86)\" : @"\") + "Adobe\Reader 11.0\Reader\AcroRd32.exe";
    ProcessStartInfo adobeInfo = new ProcessStartInfo(pathToAcroRd32, _pathToPDFFile);
    Process.Start(adobeInfo);
    

    还取决于要启动的 Acrobat Reader 版本(如果与 Adob​​e Reader 11.0 不同),您可能需要更改路径。

    【讨论】:

    • 此处的示例仅表明您应该通过创建 ProcessStartInfo 对象将 acrobat reader 的路径显式传递给 Process.Start()。然后还有关于如何恢复或构建这条路径的工作。以下示例显示了一种构建路径的方法,但只有在您知道应用程序将在哪台计算机上执行时才有效。
    【解决方案4】:

    首先,您必须检查 Adob​​e Reader 是否是 pdf 文件的默认程序。您可以在控制面板 -> 程序 -> 默认程序 -> 设置关联中查看。

    如果 Adob​​e Reader 是默认的 PDF 程序,您的代码应该可以在 Windows 8 上运行,实际上是在大多数 Windows 版本中。

    如果 Adob​​e Reader 不是默认的 PDF 程序,您需要获取 AcroRd32.exe 的路径。这个post 应该可以帮助你。然后只需执行 Hybris95 的答案中的代码。

    【讨论】:

      【解决方案5】:

      我没有看到你的完整代码,但我通过设置解决了类似的问题 ProcessStartInfo.UseShellExecute 为真。

      【讨论】:

        【解决方案6】:

        我还是有这个问题,AcroRd32.exe打不开,一直在任务管理器里。 一个可能的解决方案是选择 chrome.exe 来启动 PDF。

        像这样:

        var p = new Process
        {
            StartInfo = new ProcessStartInfo(@"chrome.exe",  path)
            {
                WindowStyle = ProcessWindowStyle.Maximized
            }
        };
        
        p.Start();
        

        【讨论】:

        • 如果您有新问题,请点击 按钮提出问题。如果您有足够的声誉,you may upvote 的问题。或者,将其“加注”为收藏夹,您将收到任何新答案的通知。
        猜你喜欢
        • 2015-09-17
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 2014-04-28
        • 2022-01-03
        相关资源
        最近更新 更多