Wesley
Wesley

Reputation: 61

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

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.

Upvotes: 6

Views: 4139

Answers (2)

DrJonez
DrJonez

Reputation: 21

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!

Upvotes: 2

Pravin .Kadam
Pravin .Kadam

Reputation: 99

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

Upvotes: 0

Related Questions