我试图使用Process.Start()打开PDF文件时遇到了问题。程序将进程作为后台进程运行,但没有adobe reader窗口显示出来。一个解决方案是使用chrome.exe,但我的客户希望在默认的Windows程序Adobe Reader上打开。
(我尝试过不强制使用"AcroRd32.exe"和传递完整路径"AcroRd32.exe",但问题依旧)。
有人解决了这个问题吗?
我的代码如下:
(我尝试过不强制使用"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
现在我将尝试找到一个解决方案,在没有管理员权限的情况下运行它,或者要求我的客户取消复选框。
解决方案
所以,我已经找到了解决我的问题的方法。自从10.0版本以来,Adobe Reader具有“受保护模式”设置。我编写了一个代码来更改注册表中的该设置,因此用户不需要这样做。链接: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\"产品和版本。
System.Diagnostics.Process.Start("output.pdf");
,这将使用您计算机上安装的默认PDF查看器。 - Pablo Tondolo de Vargas