【发布时间】:2018-05-10 18:45:23
【问题描述】:
我在尝试使用 Process.Start() 打开 PDF 文件时遇到问题。 该程序将该进程作为后台进程运行,但没有显示 adobe 阅读器窗口。我找到的一个解决方案是使用 chrome.exe,但我的客户想在 adobe-reader 上打开,因为它是默认的 windows 程序。
(我也尝试过不强制“AcroRd32.exe”并传递“AcroRd32.exe”的完整路径。同样的问题)。
有人解决了吗?
我的代码:
var p = new Process
{
StartInfo = new ProcessStartInfo(@"AcroRd32.exe", @"D:\Tests\81803130000326__.pdf")
};
p.Start();
后台进程:
我也查过这个问题:Process.Start(/* path to pdf */) doesn't work with Adobe Reader on Windows 8
修改
编辑信息:忘了说我正在使用 Adobe Reader DC 2018.009.20044 运行 Windows 10
编辑 2:发现 Adobe 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\”产品和版本。
【问题讨论】:
-
尝试将完整路径传递给 AcroRd32.exe。
-
我直接打开 pdf 文件,
System.Diagnostics.Process.Start("output.pdf");,这使用了您计算机中安装的默认 pdf 查看器。 -
@Botonomous 就像我说的,我遇到了同样的问题 :(
-
@PabloTondolodeVargas 同样的事情发生了。所有这些都以相同的方式工作。系统\程序理解并打开进程,但没有打开adobe阅读器窗口
-
您打开 pdf 文件的默认程序是什么?
标签: c# pdf process.start adobe-reader