UWP Возможно ли запустить процесс с помощью StorageFile? - PullRequest
0 голосов
/ 27 июня 2019

Имея этот код:

StorageFolder storageFolder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(file.folderToken);            
StorageFile storageFile = await storageFolder.CreateFileAsync("run.exe", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteBytesAsync(storageFile, Properties.Resources.youtube_dl1);

Я могу создать файл в выбранном пользователем месте, используя токен папки. Теперь я хочу запустить файл в процессе:

Process checkforupdates = new Process();
checkforupdates.StartInfo.FileName = storageFile.Path;
checkforupdates.StartInfo.Arguments = "-x https://www.youtube.com/watch?v=uzr5jm9ueja";
checkforupdates.StartInfo.UseShellExecute = false;
checkforupdates.StartInfo.RedirectStandardOutput = true;
checkforupdates.StartInfo.RedirectStandardOutput = true;
checkforupdates.StartInfo.RedirectStandardError = true;
checkforupdates.StartInfo.CreateNoWindow = true;
checkforupdates.EnableRaisingEvents = true;
checkforupdates.OutputDataReceived += (s, er) =>
{
Debug.WriteLine("dsds" + er.Data);
};
checkforupdates.Start();
checkforupdates.BeginOutputReadLine();
checkforupdates.BeginErrorReadLine();
checkforupdates.WaitForExit();  

Это прекрасно работает, если я использую:

 StorageFolder storageFolder = ApplicationData.Current.LocalFolder;

Но пока я использую выбранную пользователем папку, я получаю исключение. Я уверен, что исключение - UnauthorizedAccessException, но мне понадобится exe-файл в комплекте, чтобы распаковать его внутри папки, а затем выполнить команды, чтобы создать файлы внутри выбранной пользователем папки. При этом мне нужно проанализировать вывод утилиты командной строки, которую я запускаю.

Есть ли способ сделать это?

1 Ответ

1 голос
/ 27 июня 2019

Вы можете сделать это через «Desktop Bridge», чтобы упаковать приложение Win32 в пакет приложения UWP, а затем запустить с FullTrustProcessLauncher и связаться с ним через сервисы приложения. Вот образцы.

...