Диагностика.Процесс не открывает PDF-файл с помощью Adobe Reader

У меня возникла проблема при попытке открыть файл PDF с помощью Process.Start (). Программа запускает процесс в фоновом режиме, но окно 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();

Фоновые процессы:

Фоновое изображение процесса

Я также проверил этот вопрос: Process.Start (/ * путь к pdf * /) не работает с Adobe Reader в Windows 8

Изменения

ИЗМЕНИТЬ ИНФОРМАЦИЮ: забыл сказать, что у меня Windows 10 с Adobe Reader DC 2018.009.20044

РЕДАКТИРОВАТЬ 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. Вы можете запустить "Программное обеспечение \ Политики \ Adobe \" Продукты и версии, если вам это нужно.


person Wesley    schedule 27.11.2017    source источник
comment
Попробуйте передать полный путь к AcroRd32.exe.   -  person Botonomous    schedule 27.11.2017
comment
Я открываю файл pdf, System.Diagnostics.Process.Start("output.pdf");, для этого используется программа просмотра pdf по умолчанию, которую вы установили на свой компьютер.   -  person Pablo Tondolo de Vargas    schedule 27.11.2017
comment
@Botonomous Как я уже сказал, у меня такая же проблема :(   -  person Wesley    schedule 27.11.2017
comment
@PabloTondolodeVargas То же самое. Все это работает одинаково. Система \ программа понимает и открывает процесс, но не открывает окно Adobe Reader   -  person Wesley    schedule 27.11.2017
comment
Какая у вас программа по умолчанию для открытия файлов PDF?   -  person Pablo Tondolo de Vargas    schedule 27.11.2017
comment
@PabloTondolodeVargas Adobe Reader DC 2018.009.20044 (обновлено сейчас)   -  person Wesley    schedule 27.11.2017
comment
@Wesley, передайте полный путь к AcroRd32.exe, например: `StartInfo = new ProcessStartInfo (@C: \ Program Files (x86) \ Adobe \ Acrobat Reader DC \ Reader \ AcroRd32.exe, @D: \ temp \ демонстративо. pdf) `   -  person Pablo Tondolo de Vargas    schedule 27.11.2017
comment
Ваша программа работает как служба Windows или иным образом в сеансе 0 (например, планировщик задач Windows)? Тогда вы не сможете тривиально запускать приложения в сеансе текущего пользователя. См. stackoverflow.com/questions/4278373/, stackoverflow.com/questions/5627404/   -  person CodeCaster    schedule 27.11.2017
comment
Не работает, @PabloTondolodeVargas :( спасибо! CodeCaster Я пытаюсь использовать для этого новое консольное приложение. Код буквально такой. Обнаружил проблему на форумах Adobe. Проблема действительно в Adobe Reader DC. Проверьте мой новый EDIT   -  person Wesley    schedule 27.11.2017
comment
Решение найдено! Спасибо вам, ребята!   -  person Wesley    schedule 28.11.2017


Ответы (2)


На самом деле я обнаружил, что это не работает на моем компьютере, но заставило меня посмотреть глубже. Я нашел свое решение:

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

Очень похоже, но в итоге пришлось редактировать настройки пользователя, а не настройки локальной машины.

Ваше здоровье!

person DrJonez    schedule 31.05.2019

Вы можете напрямую использовать System.Diagnostics.Process.Start (""), чтобы открыть программу pdfreader по умолчанию в соответствующей клиентской системе.

person Pravin .Kadam    schedule 27.11.2017