c# - Diagnostics.Process 无法使用 Adob​​e Reader 打开 PDF 文件

标签 c# pdf process.start adobe-reader

我在尝试使用 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();

后台进程:

Background Process image

我也检查了这个问题:Process.Start(/* path to pdf */) doesn't work with Adobe Reader on Windows 8

编辑

编辑信息:忘了说我正在运行带有 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);

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

最佳答案

实际上,我发现这在我的电脑上不起作用,但它让我看得更深。 我发现我的解决方案是:

var regAdobe = Registry.CurrentUser.OpenSubKey(@"Software\Adobe\Acrobat Reader\DC\Privileged", true);
regAdobe.SetValue("bProtectedMode", 0);

非常相似,但最终不得不编辑用户设置而不是本地机器的设置。

干杯!

关于c# - Diagnostics.Process 无法使用 Adob​​e Reader 打开 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512454/

相关文章:

c# - System.Diagnostics.Process 程序继续运行

c# - 如何在父类中调用 EventHandler

c# - 尝试将 ZipArchiveEntry 转换为 byte[]

c# - Process.Start() 和手动运行有什么区别?

Python Reportlab 段落不跨越下一页

java - 打开 PDF 到特定页面

c# - 检测启动的进程是否已关闭

c# - DateTime TryParse 准确返回 0001 :01:01

c# - 创建 DataAnnotation 以确保用户指定了一种类型的电子邮件地址并且有默认值

ServletOutputStream 的 PDF 文件中的图像问题