Diagnostics.Process 不使用 adobe reader 打开 PDF 文件

Wes*_*ley 6 c# pdf adobe-reader process.start

我在尝试使用 Process.Start() 打开 PDF 文件时遇到问题。该程序将该进程作为后台进程运行,但没有显示 adobe reader 窗口。我找到的一个解决方案是使用 chrome.exe,但我的客户想在 adobe-reader 上打开,因为它是默认的 Windows 程序。

(我也尝试不强制“AcroRd32.exe”并传递“AcroRd32.exe”的完整路径。同样的问题)。

有人解决了这个问题吗?

我的代码:

var p = new Process
{
    StartInfo = new ProcessStartInfo(@"AcroRd32.exe", @"D:\Tests\81803130000326__.pdf")
};
p.Start();
Run Code Online (Sandbox Code Playgroud)

后台进程:

后台进程图像

我也检查过这个问题:Process.Start(/* path to pdf */) 不适用于 Windows 8 上的 Adob​​e Reader

编辑

编辑信息:忘了说我正在使用 Adob​​e Reader DC 2018.009.20044 运行 Windows 10

编辑 2:发现 Adob​​e Reader DC 的“问题”。它保持一定的安全级别,不允许我以管理员身份运行它(不要问我为什么)。查看此链接了解更多信息:https : //forums.adobe.com/thread/1955530

现在我将尝试找到一个解决方案来在没有管理员权限的情况下运行它,或者让我的客户取消选中该复选框

解决方案

所以,我找到了解决我的问题的方法。Adobe Reader 从 10.0 版开始,具有“保护模式”设置。我编写了一个代码来更改注册表中的设置,因此用户不需要这样做。链接:https : //www.adobe.com/devnet-docs/acrobatetk/tools/AppSec/protectedmode.html

我希望它在未来可以帮助其他人!

解决方案代码

var registroAdobe = Registry.LocalMachine.OpenSubKey(@"Software\Policies\Adobe\Acrobat Reader\DC\", true);
registroAdobe.SetValue("bProtectedMode", 0);
Run Code Online (Sandbox Code Playgroud)

这适用于 Acrobat Reader DC。如果需要,您可以浏览“Software\Policies\Adobe\”产品和版本。

Pra*_*dam 0

您可以直接使用 System.Diagnostics.Process.Start("") 在各自的客户端系统上使用默认的 pdfreader 程序打开。