Используйте Windows.Система.Лаунчер.LaunchUriAsync для запуска Notepad в UWP

#c# #uwp

#c# #uwp

Вопрос:

Я могу запустить встроенный калькулятор Microsoft через мой UWP с

 await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-calculator:settings"));
  

Как я могу сделать то же самое с таким приложением, как Notepad, которое не является одним из приложений Microsoft по умолчанию? Я попытался преобразовать путь к exe в uri через:

 var uri = new System.Uri("C:\Windows\System32\notepad.exe");
var converted = uri.AbsoluteUri; 
  

а затем запустите Windows.System.Launcher.LaunchUriAsync(new Uri(converted)); , но это не сработало.

Ответ №1:

Используйте Windows.Система.Лаунчер.LaunchUriAsync для запуска Notepad в UWP

Боюсь, вы не сможете запустить приложение Win32, указав путь к приложению с платформы UWP. LaunchUriAsync может использоваться только для запуска приложения, в котором зарегистрирован протокол.

В настоящее время существует обходной путь, который использует desktop-bridge для запуска расширения desktop, а затем вызывает Process.Start(String path) для запуска Notepad. Для получения более подробной информации, пожалуйста, найдите UWP с расширением для рабочего стола, часть 2.

Ответ №2:

Вам нужно либо экранировать свои s, либо добавить к строке @ , вот так.

 var uri = new System.Uri(@"C:WindowsSystem32notepad.exe"); 
var uri = new System.Uri("C:\Windows\System32\notepad.exe"); 
  

Комментарии:

1. Я использовал «\», но по какой-то причине, когда я публикую вопрос в Stack Overflow, он преобразует их обратно в «»