2015-06-05 2 views
0

В моем приложении WinJS я пытаюсь использовать Windows.System.launchUriAsync() для запуска протокола, который я зарегистрировал в реестре Windows.WinRT LaunchUriAsync запускает протокол, который запускает PowerShell

Этот протокол затем запускает командную строку PowerShell.

Это выглядит следующим образом:

var uri = new Windows.Foundation.Uri("s3update://FooBarApp"); 
Windows.System.Launcher.launchUriAsync(uri); 

И реестра:

Capture of registry

Вызов этого протокола из командной строки работает нормально. Вызов его через launchUriAsync() не работает. Я получаю успешный обратный вызов, единственным аргументом которого является «false», который, согласно документации, может быть связан с ограничением безопасности. Нет ошибки, ничего в каталоге событий Windows.

Я попытался создать небольшой исполняемый файл, который, в свою очередь, запускает командную строку PowerShell. Когда я изменяю протокол, чтобы запустить этот исполняемый файл, а не запускать напрямую PowerShell. Он работает как из командной строки, так и из моего приложения WinJS. Это возможное решение для моей проблемы, но я действительно хотел бы знать, по крайней мере, почему ассоциация launchUriAsync с протоколом, запускающим PowerShell, не работает.

+0

Вы пытались установить флаг 'treatAsUntrusted'? https://msdn.microsoft.com/en-US/library/windows/apps/windows.system.launcheroptions.treatasuntrusted.aspx – WiredPrairie

+0

Да, я это сделал. Без улучшения. – user1174017

+0

Я, честно говоря, не удивлен, что вы не можете запустить Powershell ... это означало бы, что вы могли бы выполнять скрипты и т. Д., Все из «безопасной» среды приложения Windows 8+. – WiredPrairie

ответ

1

Для системных двоичных файлов политика безопасности по умолчанию заключается в блокировании доступа к схемам uri через URI пусковой установки. Системные двоичные файлы, которые являются безопасными, были выбраны для поддержки этого использования с использованием значения EditFlags FTA_SafeForElevation

Powershell может быть довольно опасным, поэтому, если вы намерены выбрать регистрацию схемы uri, сначала сделайте тщательный анализ безопасности.