Как выключить планшет с Windows из приложения UWP, работающего в режиме ограниченного доступа?

У меня есть приложение UWP, работающее в режиме ограниченного доступа на планшете с Windows без физической клавиатуры. После того, как пользователь завершит операцию, я хочу позволить пользователю выключить планшет (не могу Alt + CTRL + DEL и выключить, так как нет физической клавиатуры). Я знаю, что от UWP нет API для выключения планшета. но есть ли обходные пути? Как Microsoft справляется с этим сценарием?


person Suneesh    schedule 05.01.2016    source источник


Ответы (1)


Это недостижимо в приложении UWP, которое работает внутри контейнера приложения и не имеет такой привилегии.

Однако вы можете опробовать компоненты среды выполнения Windows с посредником для загружаемых неопубликованных приложений из Магазина Windows. По сути, он позволяет приложению UWP вызывать Win32 API, размещенный в другом процессе, который выполняется вне контейнера приложения.

Внутри вашего брокерского компонента вы можете использовать приведенный ниже код для выключения вашего ПК.

var psi = new ProcessStartInfo("shutdown", "/s /t 0");
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
Process.Start(psi);

Ниже представлен шаблон компонента WinRT при посредничестве для VS2015 https://visualstudiogallery.msdn.microsoft.com/d2e9cac0-66a8-464a-a902-55ae765c8e6e?tduid=(c5f2776eb12ea55b8926d0c075062c075062c)gN1OuW5VyKxMyOTAH.bK0w)()»отн=

Ниже приведен очень хороший пример создания компонентов через посредника для UWP: https://xamltips.wordpress.com/2015/11/13/brokered-component-for-uwp-on-windows-10/

Для получения дополнительной информации см. https://msdn.microsoft.com/en-us/library/windows/apps/dn630195.aspx

person Jackie    schedule 04.02.2016
comment
Я использовал службу Windows, взаимодействующую с приложением по TCP. и это сработало! - person Suneesh; 05.02.2016
comment
Ха, это тоже взлом. - person Jackie; 19.04.2016
comment
@Suneesh Я пробовал то же самое, но UWP не поддерживает цикл возврата. вы использовали checknetisolation loopbackexempt для исключения приложения? - person Sam; 16.11.2016
comment
@Sam Я запустил службу Windows с TCP-сервером, который работал с повышенными привилегиями. Я не могу сказать вам наверняка, но я думаю, что добавил код в установщик службы, чтобы добавить checknetisolation loopbackexempt для приложения. У меня сейчас нет исходного кода приложения. - person Suneesh; 18.11.2016
comment
@Jackie, использующий shutdown.exe, на короткое время показывает мне экран входа в систему. Можно ли этого избежать? Я проверил, что экран входа в систему не появляется, когда он не находится в режиме назначенного доступа (то есть при запуске приложения с рабочего стола). - person anssi; 01.03.2017