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

Я могу создавать PDF файлы в своем приложении С#/WPF и запускать их со следующими параметрами:

Process.Start(_pathToPDFFile);

Это работает с Adobe Acrobat, но не с Adobe Reader. Когда Adobe Reader установлен, Process.Start() ничего не делает, пока процесс чтения не запущен в диспетчере задач.

Как я могу заставить Adobe Reader показывать PDF файл при попытке запустить PDF файл?

Ответ 1

Вот как я это делаю, может быть способ восстановить точный путь к AcroRd32.exe из реестра, хотя:

String pathToAcroRd32 = Environment.GetEnvironmentVariable("ProgramFiles") + ((Environment.Is64BitOperatingSystem) ? @" (x86)\" : @"\") + "Adobe\Reader 11.0\Reader\AcroRd32.exe";
ProcessStartInfo adobeInfo = new ProcessStartInfo(pathToAcroRd32, _pathToPDFFile);
Process.Start(adobeInfo);

В зависимости от версии программы Acrobat Reader для запуска (если она отличается от Adobe Reader 11.0) вам может потребоваться изменить путь.

Ответ 2

Может быть, попробуй что-нибудь вроде этого? Я попробовал код в Windows 8 с помощью Adobe Reader 11, и, похоже, он отлично работает для меня. Может быть, что-то еще не так на этой машине?

var process = new Process();
process.StartInfo = new ProcessStartInfo(@"Path to your PDF.pdf");
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = true;
process.Start();

Ответ 3

Во-первых, вы должны проверить, является ли программа Adobe Reader программой по умолчанию для файлов PDF. Вы можете проверить его на панели управления → Программы → Программы по умолчанию → Установить ассоциации.

Если Adobe Reader является программой PDF по умолчанию, ваш код должен работать на Windows 8, фактически в большинстве версий Windows.

Если Adobe Reader не является программой PDF по умолчанию, вам необходимо получить путь к AcroRd32.exe. Это сообщение должно помочь вам. Затем просто выполните код в ответе Hybris95.

Ответ 4

Я не вижу ваш полный код, но я решил аналогичную проблему, установив ProcessStartInfo.UseShellExecute в true.

Ответ 5

В нашем случае проблема была только воспроизводимой при запуске приложения из Visual Studio - запуск .exe напрямую работает так, как ожидалось.

После некоторой отладки выяснилось, что Visual Studio всегда была запущена как администратор, что вызывает проблему. Отключение этого параметра (которое достаточно сложно) устраняет проблему.

Все еще не уверен, почему это происходит.

Ответ 6

У меня все еще есть эта проблема, я не могу открыть AcroRd32.exe, просто остаюсь там в диспетчере задач. Возможным решением является выбор chrome.exe для запуска PDF.

Вот так:

var p = new Process
{
    StartInfo = new ProcessStartInfo(@"chrome.exe",  path)
    {
        WindowStyle = ProcessWindowStyle.Maximized
    }
};

p.Start();