перезапустить через код на windows 10 uwp

Мы создали приложение для Windows 10, которое работает на планшетах в режиме киоска Windows 10. Он работает просто отлично, однако соединение Wi-Fi иногда теряется, так как места очень удалены. Мы попытались решить проблему со стороны сети, но когда устройства теряют и восстанавливают доступ к Интернету, приложение по-прежнему зависает, как будто у него нет доступа к Интернету, отображая пустую страницу. Там, где используются эти устройства, они крепятся болтами к стене, чтобы предотвратить кражу. Это означает, что если мы хотим перезагрузить его, это займет очень много времени, так как нам нужно открутить корпуса от стены, а затем открыть корпуса, чтобы получить доступ к кнопке питания, и единственный способ снова успешно запустить приложение — это выполнить перезагрузите устройство.

Было высказано предположение, что у нас есть способ выполнить перезагрузку из приложения, однако каждый пример кода, который я пробовал, не работает в Windows 10 UWP. Вот наиболее распространенный, который я нашел:

System.Diagnostics.Process.Start("restart", "/r");

У меня есть доступ к пространству имен

System.Diagnostics

но класса Process не существует. У кого-нибудь есть предложения по перезагрузке через код на Win 10 UWP? Или лучшее решение нашей проблемы? Заранее спасибо.

Также стоит упомянуть, что я также пытался выполнить команду Powershell, и dll, на которую мне нужно ссылаться для класса Powershell, несовместима с UWP.


person christina.snyder    schedule 10.11.2015    source источник
comment
Невозможно. Я бы предложил найти ошибку, которая делает перезапуски необходимыми, или использовать приложение, отличное от UWP.   -  person sibbl    schedule 10.11.2015
comment
Ищите альтернативные решения, кроме перезагрузки, которые, возможно, позволит песочница Win 10, например. Возможно, выключив и выключив режим полета для исправления, или каким-либо образом активировав сетевое соединение для очистки, тогда, возможно, вы сможете закодировать эти параметры.   -  person Muster Station    schedule 10.11.2015
comment
Спасибо вам обоим за ответы, я рассмотрю ваши предложения.   -  person christina.snyder    schedule 10.11.2015


Ответы (2)


То, что вам нужно, невозможно с API-интерфейсами, доступными для приложений UWP. Это было решение безопасности. Приложение, распространяемое через магазин, не должно позволять выполнять такие действия, как перезагрузка компьютеров.

Судя по вашему сценарию, вам не нужно проходить через магазин. Это означает, что вы можете использовать собственный код PInvoke, чтобы делать все, что захотите. Это все равно нужно будет инициировать на самом устройстве.

person Matt Lacey    schedule 10.11.2015
comment
Вы правы, я загружаю приложение и не публикую его в магазине. Спасибо за помощь! - person christina.snyder; 10.11.2015
comment
Позволяет ли неопубликованная загрузка вызывать API, которые в противном случае были бы ограничены? Насколько я понял, неопубликованная загрузка просто эмулирует развертывание Магазина Windows, и поэтому я предполагал, что на него будут распространяться те же ограничения безопасности. Разве это не так? - person devios1; 01.10.2016
comment
@devios Если загрузка неопубликована, он не проходит проверку, которую проводит магазин, чтобы убедиться, что вы не используете то, что не должны. - person Matt Lacey; 11.10.2016

Да, вы можете это сделать! Вы должны добавить Системное администрирование IoT в объявления возможностей приложения:

<Capabilities><iot:Capability Name="systemManagement"/></Capabilities>

а также вам необходимо добавить в проект расширение Windows IoT для UWP.

используя это для Завершения работы

Windows.System.ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Shutdown, TimeSpan.FromSeconds(1));        //Delay is not relevant to shutdown

или для Перезапуска

Windows.System.ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Restart, TimeSpan.FromSeconds(1));     //Delay before restart after shutdown

Вы можете получить дополнительную информацию по этой ссылке.

person Faraz    schedule 12.01.2021
comment
Расширение IoT предназначено только для устройств Windows IoT. - person Luca Ziegler; 12.04.2021