Можно ли перейти на экран блокировки в Windows из приложения UWP?

У меня есть приложение UWP (которое никогда не будет отправлено в магазин), и в этом приложении есть раздел «Администратор». Я хотел бы добавить в этот раздел кнопку, которая будет направлять пользователя на экран блокировки Windows. Оттуда пользователь может решить войти в систему как другой пользователь. Возможно ли это из приложения UWP? Как упоминалось выше, это приложение не будет поступать в магазин, поэтому ему не нужно выполнять какие-либо требования магазина.


person user6115111    schedule 21.07.2016    source источник
comment
Вы проверили мой ответ? Любая проблема?   -  person Grace Feng    schedule 03.08.2016


Ответы (1)


Как упоминалось выше, это приложение не будет поступать в магазин, поэтому ему не нужно выполнять какие-либо требования магазина.

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

Для выполнения этой работы лучше обратиться к Компоненты среды выполнения Windows через посредника для загружаемых неопубликованными приложениями Магазина Windows, чтобы начать работу.

Шаг, который необходимо предпринять для создания такого приложения, вы можете следовать краткому руководству VS2015TemplateBrokeredComponents. Здесь я НЕ БУДУ снова перечислять шаги, я вставлю только некоторый код, который может вам понадобиться для этого сценария, например здесь, в проекте Brokered WinRT Component создайте интерфейс "IApLauncher":

[ComVisible(true)]
public interface IAppLauncher
{
    /// <summary>
    /// Launch desktop application from file name
    /// </summary>
    /// <param name="fileName">target application executable file name</param>
    void Launch(string fileName);

    void LaunchWithArg(string fileName, string arguments);
}

создайте класс "AppLauncher", наследуемый от этого интерфейса:

[ComVisible(true)]
public sealed class AppLauncher : IAppLauncher
{
    /// <summary>
    /// Launch desktop application from file name
    /// </summary>
    /// <param name="fileName">target application executable file name</param>
    public void Launch(string fileName)
    {
        Process.Start(fileName);
    }

    public void LaunchWithArg(string fileName, string arguments)
    {
        Process.Start(fileName, arguments);
    }
}

После создания, регистрации, ссылки на проекты и изменения файла манифеста вы можете использовать его в своем приложении UWP, например, так:

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    new AppLauncher().LaunchWithArg(@"C:\WINDOWS\system32\rundll32.exe", "user32.dll,LockWorkStation");
}
person Grace Feng    schedule 25.07.2016