Diagnostics.Process doesn't open PDF file using adobe reader
Asked Answered
G

2

6

I'm having a problem while trying to open a PDF file using Process.Start(). The program runs the process as a background process but no adobe reader window show up. A solution i found was to use chrome.exe, but my client want to open on adobe-reader, as it's the default windows program.

(I have also trying without forcing "AcroRd32.exe" and passing the full path of "AcroRd32.exe". Same problem).

Anyone solved this?

My code:

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

Background Processes:

Background Process image

I also have checked this question: Process.Start(/* path to pdf */) doesn't work with Adobe Reader on Windows 8

Edits

EDIT INFO: Forgot to say i'm running Windows 10 with Adobe Reader DC 2018.009.20044

EDIT 2: Found a "problem" of Adobe Reader DC. It mantains a level of security that doesn't let me run it as administrator (don't ask me why). Check this link for more information: https://forums.adobe.com/thread/1955530

Now I'll try to find a solution to run it without administrator privileges, or ask my client to uncheck the checkbox

Solution

So, I've found a solution for my problem. The Adobe Reader, since version 10.0, has a "Protected Mode" setting. I wrote a code to change that setting in the registry, so the user won't need to do that. Link: https://www.adobe.com/devnet-docs/acrobatetk/tools/AppSec/protectedmode.html

I hope it helps others in the future!

Solution Code:

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

This works for Acrobat Reader DC. You can run through "Software\Policies\Adobe\" Products and Versions if you need it.

Godred answered 27/11, 2017 at 13:47 Comment(10)
Try passing in the full path to AcroRd32.exe.Kalvn
I open direct the pdf file, System.Diagnostics.Process.Start("output.pdf");, this use the default pdf viewer that you have installed in your computer.Cacuminal
@Kalvn Like i said, i got the same problem :(Godred
@PabloTondolodeVargas Same thing occours. All these works the same way. The system\program understants and open the process, but doesn't open the adobe reader windowGodred
What's your default program to open pdf files?Cacuminal
@PabloTondolodeVargas Adobe Reader DC 2018.009.20044 (updated that now)Godred
@Wesley, pass the full path to AcroRd32.exe, like this ` StartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe", @"D:\temp\demonstrativo.pdf")`Cacuminal
Does your program run as a Windows Service, or otherwise on Session 0 (e.g. Windows Task Scheduler)? Then you can't trivially start applications in the session of the current user. See #4278873, #5627904Preshrunk
Doesn't work, @PabloTondolodeVargas :( thanks! CodeCaster I'm trying using a new console application for that. The code is literally just that. Discovered the problem on adobe forums. The problem is really Adobe Reader DC. Check my new EDITGodred
Solution Found! thank you guys!Godred
Q
2

Actually, I found that this didn't work on my computer, but it led me to look deeper. I found my solution to be:

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

Very similar, but ended up having to edit the user setting rather than the local machine's setting.

Cheers!

Quiet answered 31/5, 2019 at 19:34 Comment(0)
T
0

You can directly use System.Diagnostics.Process.Start("") to open with default pdfreader program on respective client system.

Tuscany answered 27/11, 2017 at 14:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.