Ответ 1
Вы можете попытаться указать имя файла процесса "explorer.exe" явно, как это предлагается в следующем потоке:
var startInfo = new ProcessStartInfo("explorer.exe", url);
Process.Start(startInfo);
Чтобы открыть URL-адрес из приложения .NET, многие сайты (qaru.site/info/60062/...) приводят пример:
Process.Start("http://www.google.com/");
В Windows 8 это работает, если Internet Explorer является браузером по умолчанию. Однако, если Google Chrome по умолчанию, он терпит неудачу с:
Unhandled Exception: System.ComponentModel.Win32Exception: Class not registered
Означает ли это, что этот метод больше не является правильным способом открыть URL-адрес в Windows? Какие существуют альтернативы? Безопаснее ли просто запускать Internet Explorer?
Вы можете попытаться указать имя файла процесса "explorer.exe" явно, как это предлагается в следующем потоке:
var startInfo = new ProcessStartInfo("explorer.exe", url);
Process.Start(startInfo);
Ответ Armin - это тот, который я использовал, и он работал хорошо.
Я просто хочу добавить, что я получаю исключение класса без регистрации, когда я запускаю процесс из программы, которая работает с повышенными разрешениями. Это похоже на новое поведение в Windows 8.
Я пробовал много решений, но поскольку я в проекте UI (wpf или winform), я закончил использование встроенного элемента управления браузером. Вызов навигации, установка URL-адреса, затем таргетинг на "_blank" запускает окно внешнего браузера.
_webBrowser.Navigate(uri, "_blank");
Надеюсь, это поможет. DC
Используйте Launcher для открытия URL-адресов.
Пример:
await Launcher.LaunchUriAsync(new Uri("www.google.com"));