В моем приложении WinJS я пытаюсь использовать Windows.System.launchUriAsync() для запуска протокола, который я зарегистрировал в реестре Windows.WinRT LaunchUriAsync запускает протокол, который запускает PowerShell
Этот протокол затем запускает командную строку PowerShell.
Это выглядит следующим образом:
var uri = new Windows.Foundation.Uri("s3update://FooBarApp");
Windows.System.Launcher.launchUriAsync(uri);
И реестра:
Вызов этого протокола из командной строки работает нормально. Вызов его через launchUriAsync() не работает. Я получаю успешный обратный вызов, единственным аргументом которого является «false», который, согласно документации, может быть связан с ограничением безопасности. Нет ошибки, ничего в каталоге событий Windows.
Я попытался создать небольшой исполняемый файл, который, в свою очередь, запускает командную строку PowerShell. Когда я изменяю протокол, чтобы запустить этот исполняемый файл, а не запускать напрямую PowerShell. Он работает как из командной строки, так и из моего приложения WinJS. Это возможное решение для моей проблемы, но я действительно хотел бы знать, по крайней мере, почему ассоциация launchUriAsync с протоколом, запускающим PowerShell, не работает.
Вы пытались установить флаг 'treatAsUntrusted'? https://msdn.microsoft.com/en-US/library/windows/apps/windows.system.launcheroptions.treatasuntrusted.aspx – WiredPrairie
Да, я это сделал. Без улучшения. – user1174017
Я, честно говоря, не удивлен, что вы не можете запустить Powershell ... это означало бы, что вы могли бы выполнять скрипты и т. Д., Все из «безопасной» среды приложения Windows 8+. – WiredPrairie