Средство запуска оболочки

С помощью средства запуска оболочки можно настроить устройство киоска для использования практически любого приложения или исполняемого файла в качестве пользовательской оболочки. Указанное вами приложение заменяет оболочку по умолчанию (explorer.exe), которая обычно запускается при входе пользователя в систему.

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

Существует несколько исключений из приложений и исполняемых файлов, которые можно использовать в качестве пользовательской оболочки:

  • В качестве пользовательской оболочки нельзя использовать следующий исполняемый файл: C:\\Windows\\System32\\Eshell.exe. Использование Eshell.exe в качестве оболочки по умолчанию приведет к пустому экрану после входа пользователя.
  • Вы не можете использовать универсальное приложение для Windows в качестве пользовательской оболочки.
  • Вы не можете использовать пользовательскую оболочку для запуска универсальных приложений для Windows, например приложения "Параметры".
  • Вы не можете использовать приложение, которое запускает другой процесс и завершает работу в качестве пользовательской оболочки. Например, нельзя указать write.exe в средство запуска оболочки. Средство запуска оболочки запускает пользовательскую оболочку и отслеживает процесс для идентификации завершения работы пользовательской оболочки. Write.exe создает 32-разрядный процесс wordpad.exe и завершает работу. Так как средству запуска оболочки не известно о созданном процессе wordpad.exe, средство запуска оболочки выполняет действие на основе кода выхода Write.exeи перезапускает пользовательскую оболочку.
  • Вы не можете предотвратить завершение работы системы. Для средства запуска оболочки версии 1 и 2 невозможно заблокировать завершение сеанса, возвращая значение FALSE при получении сообщения WM_QUERYENDSESSION в графическом приложении или возвращая ЗНАЧЕНИЕ FALSE в подпрограмме обработчика , добавляемой с помощью функции SetConsoleCtrlHandler в консольном приложении.

Примечание

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

С помощью средства запуска оболочки версии 2 можно указать универсальное приложение для Windows в качестве пользовательской оболочки. Установите флажок Использовать средство запуска оболочки, чтобы создать киоск Windows 10, чтобы узнать о различиях между средством запуска оболочки версии 1 и командой запуска оболочки версии 2.

Средство запуска оболочки обрабатывает разделы реестра Run и RunOnce перед запуском пользовательской оболочки, поэтому пользовательская оболочка не должна обрабатывать автоматический запуск других приложений и служб.

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

В дополнение к средству запуска оболочки можно использовать методы управления доступом к другим классическим приложениям и системным компонентам, таким как, групповая политика, AppLocker и мобильные Управление устройствами

Примечание

В средстве запуска оболочки версии 1, доступной в Windows 10, можно указать только классическое приложение Windows в качестве замены оболочки. В средстве запуска оболочки версии 2, доступной в Windows 10, версия 1809 и более поздних версий, можно также указать приложение UWP в качестве замены оболочки.

Чтобы использовать средство запуска оболочки версии 2 в версии 1809, необходимо установить обновление KB4551853.

Различия между средствами запуска оболочки версии 1 и средства запуска оболочки версии 2

Средство запуска оболочки explorer.exeверсии 1 заменяет оболочку по умолчанию на eshell.exe, которая может запускать классическое приложение Windows. Средство запуска оболочки версии 2 заменяет на explorer.execustomshellhost.exe. Этот новый исполняемый файл может запускать классическое приложение Windows или приложение UWP. Помимо возможности использовать приложение UWP для замены оболочки, средство запуска оболочки версии 2 предоставляет дополнительные усовершенствования:

  • Вы можете использовать настраиваемое классическое приложение Windows, которое затем может запускать приложения UWP, такие как Параметры и Сенсорная клавиатура.
  • Из пользовательской оболочки UWP можно запускать вторичные представления и выполнять их на нескольких мониторах.
  • Пользовательское приложение оболочки выполняется в полноэкранном режиме и может запускать другие приложения в полноэкранном режиме по требованию пользователя. Примеры XML-конфигураций для различных сочетаний приложений см. в разделе Примеры для средства запуска оболочки версии 2.

Требования

Windows 10 Корпоративная или Windows 10 для образовательных учреждений.

Терминология

  • Включите, включите: Чтобы сделать параметр доступным для устройства и при необходимости применить параметры к устройству.
  • Настроить: Настройка параметра или подмножества.
  • Внедренное средство запуска оболочки: В Windows 10 версии 1511 эта функция называется встроенным средство запуска оболочки.
  • Пользовательское средство запуска оболочки: Эта функция называется средство запуска оболочки в Windows 10 версии 1607 и более поздних версиях.

Включение средства запуска оболочки

Средство запуска оболочки является необязательным компонентом и не включается по умолчанию в Windows 10. Его необходимо включить перед настройкой. Вы можете включить и настроить средство запуска оболочки в настроенном образе Windows 10 (WIM), если microsoft Windows не установлен. Если Windows уже установлена, необходимо включить средство запуска оболочки перед применением пакета подготовки для настройки средства запуска оболочки.

Включение средства запуска оболочки с помощью панель управления

  1. В поле Поиск в Интернете и Windows введите Программы и компоненты и нажмите клавишу ВВОД или нажмите или выберите Программы и компоненты , чтобы открыть его.
  2. В окне Программы и компоненты выберите Включить или отключить компоненты Windows.
  3. В окне Компоненты Windows разверните узел Блокировка устройств , установите или снимите флажок Средство запуска оболочки, а затем нажмите кнопку ОК.
  4. В окне Компоненты Windows указано, что Windows ищет необходимые файлы, и отображается индикатор выполнения. После обнаружения в окне появится сообщение о том, что Windows применяет изменения. После завершения в окне будет указано, что запрошенные изменения завершены.
  5. Нажмите кнопку Закрыть , чтобы закрыть окно Компоненты Windows .

Примечание

Включение средства запуска оболочки не требует перезапуска устройства.

Включение средства запуска оболочки путем вызова WESL_UserSetting

  1. Включите или отключите средство запуска оболочки, вызвав функцию WESL_UserSetting.SetEnabled в классе инструментария управления Windows (WMI) WESL_UserSetting.
  2. Если вы включаете или отключаете средство запуска оболочки с помощью WESL_UserSetting, изменения не повлияют на сеансы, которые в настоящее время входят в систему. необходимо выйти и снова войти в систему.

В этом примере используется образ Windows с именем install.wim, но вы можете использовать ту же процедуру для применения пакета подготовки (дополнительные сведения о DISM см. в статье Что такое обслуживание образов развертывания и управление ими.

Включение средства запуска оболочки с помощью DISM

  1. Откройте окно командной строки с правами администратора.

  2. Скопируйте install.wim во временную папку на жестком диске (в следующих шагах предполагается, что она называется C:\wim).

  3. Создайте новый каталог.

    md c:\wim
    
  4. Подключите образ.

    dism /mount-wim /wimfile:c:\bootmedia\sources\install.wim /index:1 /MountDir:c:\wim
    
  5. Включите функцию.

    dism /image:c:\wim /enable-feature /all /featureName:Client-EmbeddedShellLauncher
    
  6. Зафиксируйте изменения.

    dism /unmount-wim /MountDir:c:\wim /Commit
    

Включение средства запуска оболочки с помощью Designer конфигурации Windows

Параметры средства запуска оболочки также доступны в качестве параметров подготовки Windows, поэтому их можно настроить для применения во время выполнения образа. Вы можете задать один или все параметры средства запуска оболочки, создав пакет подготовки с помощью Designer Конфигурации Windows, а затем применив пакет подготовки во время развертывания образа или во время выполнения. Если Windows не установлена и вы используете Designer конфигурации Windows для создания установочного носителя с параметрами средства запуска оболочки, включенных в образ, или вы применяете пакет подготовки во время установки, необходимо включить средство запуска оболочки на установочном носителе с помощью DISM, чтобы пакет подготовки успешно применялся.

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

  1. Создайте пакет подготовки в конфигурации Windows Designer, следуя инструкциям в разделе Создание пакета подготовки для Windows 10.
  2. На странице Доступные настройки выберите Параметры> среды выполненияSMIПараметры>ShellLauncher.
  3. Задайте для параметра Enable значение ENABLE (Включить). Появятся дополнительные параметры для настройки средства запуска оболочки, и вы можете задать нужные значения.
  4. Завершив настройку параметров и создав пакет подготовки, вы можете применить пакет к времени развертывания образа или среде выполнения. Дополнительные сведения см. в разделе Применение пакета подготовки . Процесс применения пакета к Windows 10 Корпоративная образу одинаков.

Настройка средства запуска оболочки

Существует два способа настройки средства запуска оболочки:

  1. В Windows 10 версии 1803 можно настроить средство запуска оболочки с помощью узла ShellLauncher поставщика служб конфигурации назначенного доступа (CSP). Дополнительные сведения см. в статье AssignedAccess CSP . Настройка средства запуска оболочки с помощью этого метода также автоматически включает средство запуска оболочки на устройстве, если устройство поддерживает его.
  2. Используйте поставщики WMI средства запуска оболочки непосредственно в скрипте или приложении PowerShell.

Для средства запуска оболочки можно настроить следующие параметры:

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

Любые изменения не вступают в силу до тех пор, пока пользователь не войдет в систему.

Запуск разных оболочек для разных учетных записей пользователей

По умолчанию средство запуска оболочки запускает оболочку по умолчанию, которая указывается при создании образа ОС во время разработки. Оболочка по умолчанию имеет значение Cmd.exe, но в качестве оболочки по умолчанию можно указать любой исполняемый файл.

Вы можете настроить средство запуска оболочки для запуска другой оболочки для определенных пользователей или групп, если вы не хотите запускать оболочку по умолчанию. Например, вы можете настроить на устройстве запуск пользовательской оболочки приложения для гостевых учетных записей, но запустить стандартную оболочку Windows Обозреватель для учетных записей администратора для обслуживания устройства.

Если вы используете поставщики WMI для настройки средства запуска оболочки для пользователя или группы во время выполнения, необходимо использовать идентификатор безопасности (SID) для этого пользователя или группы; вы не можете использовать имя пользователя или имя группы.

Дополнительные сведения об общих идентификаторах безопасности см. в разделе Известные идентификаторы БЕЗОПАСНОСТИ.

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

Выполнение действия при выходе из оболочки

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

Действие Описание
0 Перезапустите оболочку.
1 Перезагрузите устройство.
2 Завершите работу устройства.
3 Не делать ничего.

Важно!

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

Действие кода возврата по умолчанию

Вы можете определить действие кода возврата по умолчанию для средства запуска оболочки с помощью параметра DefaultReturnCodeAction. Если вы не измените начальное значение, для действия кода возврата по умолчанию устанавливается значение 0 (ноль), что означает, что средство запуска оболочки перезапускает оболочку при выходе из оболочки.

Сопоставление кода выхода с действием средства запуска оболочки

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

Если код выхода не соответствует определенному значению, средство запуска оболочки выполняет действие кода возврата по умолчанию.

Например, оболочка может возвращать значения кода выхода -1, 0, 1 или 255 в зависимости от способа выхода оболочки. Вы можете настроить средство запуска оболочки следующими способами:

  • перезагрузите устройство (1), когда оболочка возвращает код выхода со значением -1
  • перезапустите оболочку (0), когда оболочка возвращает код выхода со значением 0.
  • Ничего не делать (3), когда оболочка возвращает код выхода со значением 1
  • завершение работы устройства (2), когда оболочка возвращает код выхода со значением 255

Пользовательское сопоставление действий с кодом возврата будет выглядеть следующим образом:

Код выхода Действие
-1 1 (перезагрузить устройство)
0 0 (перезапуск оболочки)
1 3 (ничего не делать)
255 2 (завершение работы устройства)

Настройка пользовательской оболочки

Измените следующий сценарий PowerShell соответствующим образом и запустите его на устройстве.

# Check if shell launcher license is enabled
function Check-ShellLauncherLicenseEnabled
{
    [string]$source = @"
using System;
using System.Runtime.InteropServices;

static class CheckShellLauncherLicense
{
    const int S_OK = 0;

    public static bool IsShellLauncherLicenseEnabled()
    {
        int enabled = 0;

        if (NativeMethods.SLGetWindowsInformationDWORD("EmbeddedFeature-ShellLauncher-Enabled", out enabled) != S_OK) {
            enabled = 0;
        }
        return (enabled != 0);
    }

    static class NativeMethods
    {
        [DllImport("Slc.dll")]
        internal static extern int SLGetWindowsInformationDWORD([MarshalAs(UnmanagedType.LPWStr)]string valueName, out int value);
    }

}
"@

    $type = Add-Type -TypeDefinition $source -PassThru

    return $type[0]::IsShellLauncherLicenseEnabled()
}

[bool]$result = $false

$result = Check-ShellLauncherLicenseEnabled
"`nShell Launcher license enabled is set to " + $result
if (-not($result))
{
    "`nThis device doesn't have required license to use Shell Launcher"
    exit
}

$COMPUTER = "localhost"
$NAMESPACE = "root\standardcimv2\embedded"

# Create a handle to the class instance so we can call the static methods.
try {
    $ShellLauncherClass = [wmiclass]"\\$COMPUTER\${NAMESPACE}:WESL_UserSetting"
    } catch [Exception] {
    write-host $_.Exception.Message; 
    write-host "Make sure Shell Launcher feature is enabled"
    exit
    }


# This well-known security identifier (SID) corresponds to the BUILTIN\Administrators group.

$Admins_SID = "S-1-5-32-544"

# Create a function to retrieve the SID for a user account on a machine.

function Get-UsernameSID($AccountName) {

    $NTUserObject = New-Object System.Security.Principal.NTAccount($AccountName)
    $NTUserSID = $NTUserObject.Translate([System.Security.Principal.SecurityIdentifier])

    return $NTUserSID.Value
}

# Get the SID for a user account named "Cashier". Rename "Cashier" to an existing account on your system to test this script.

$Cashier_SID = Get-UsernameSID("Cashier")

# Define actions to take when the shell program exits.

$restart_shell = 0
$restart_device = 1
$shutdown_device = 2
$do_nothing = 3

# Examples. You can change these examples to use the program that you want to use as the shell.

# This example sets the command prompt as the default shell, and restarts the device if the command prompt is closed. 

$ShellLauncherClass.SetDefaultShell("cmd.exe", $restart_device)

# Display the default shell to verify that it was added correctly.

$DefaultShellObject = $ShellLauncherClass.GetDefaultShell()

"`nDefault Shell is set to " + $DefaultShellObject.Shell + " and the default action is set to " + $DefaultShellObject.defaultaction

# Set Internet Explorer as the shell for "Cashier", and restart the machine if Internet Explorer is closed.

$ShellLauncherClass.SetCustomShell($Cashier_SID, "c:\program files\internet explorer\iexplore.exe www.microsoft.com", ($null), ($null), $restart_shell)

# Set Explorer as the shell for administrators.

$ShellLauncherClass.SetCustomShell($Admins_SID, "explorer.exe")

# View all the custom shells defined.

"`nCurrent settings for custom shells:"
Get-WmiObject -namespace $NAMESPACE -computer $COMPUTER -class WESL_UserSetting | Select Sid, Shell, DefaultAction

# Enable Shell Launcher

$ShellLauncherClass.SetEnabled($TRUE)

$IsShellLauncherEnabled = $ShellLauncherClass.IsEnabled()

"`nEnabled is set to " + $IsShellLauncherEnabled.Enabled

# Remove the new custom shells.

$ShellLauncherClass.RemoveCustomShell($Admins_SID)

$ShellLauncherClass.RemoveCustomShell($Cashier_SID)

# Disable Shell Launcher

$ShellLauncherClass.SetEnabled($FALSE)

$IsShellLauncherEnabled = $ShellLauncherClass.IsEnabled()

"`nEnabled is set to " + $IsShellLauncherEnabled.Enabled

Примечание

Предыдущий скрипт содержит примеры нескольких параметров конфигурации, включая удаление пользовательской оболочки и отключение средства запуска оболочки. Он не предназначен для запуска "как есть".

Права пользователя средства запуска оболочки

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

Предупреждение

Если приложению оболочки требуются права администратора и его необходимо повысить, а контроль учетных записей (UAC) присутствует на вашем устройстве, необходимо отключить контроль учетных записей, чтобы средство запуска оболочки запустило приложение оболочки.