Создание компьютерных киосков, или кое-что из новых функций windows 8.1

Рад приветствовать Вас, дорогие коллеги.

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

Еще когда я работал в молодости в одном из банков, руководство однажды подняло вопрос о том, что как бы в холе нашего «дорогого» банка поставить компьютеры, чтоб «любимые» клиенты не напрягали работников, а по возможности, сами выполняли некоторые функции. Тогда мне пришлосьполомать голову. Была создана учетка в АД. Затем на эту учетку применялась групповая политика, которая определяла шел для этого пользователя, запрещала вызывать командную строку, менеджер задач, а также кучу всевозможных утилит, через которые пользователь мог бы обойти настройки и наконфигурировать что-то под себя. Были однако и проблемы связанные с тем, что пользователь мог свернуть программу. Однако тут уже приходилось напрягать разработчиков, которые писали интерфейс так, чтоб пользователь не мог ресайзить приложение. Как вариант можно было лочить окно приложения только под максимальный размер экрана.

Что же нам предлагает Windows 8.1 для решения данной проблемы?

В новой версии появилась функция «Assigned Access». Это функция, которая позволяет нам прикручивать любую локальную учетную запись под одно сторовское приложение, которое будет автоматом запускаться при входе из-под этой записи в систему.

Рассмотрим теперь процесс того, как данной функцией воспользоваться.

Для начала необходимо создать локальную учетную запись, под которую будем цеплять эту функцию. Это можно сделать как старыми средствами управления (в Control Panel), так и через новый интерфейс (Settings -> Change PC Settings -> Accounts -> Other Accounts). Далее следует Важный момент – необходимо хотя бы один раз залогиниться на будущем киоске. Этот пункт необходим для того, чтоб под созданную учетную запись настроились программы, а также, если это необходимо, подтянулись приложения из Store, если с учетной записью будет связан Microsoft Account. Всё. Окружение нашего пользователя готово и можно двигаться дальше. Начиная с этого момента можно настраивать киоск для его непосредственной работы. Заходим еще раз в окно управления учетными записями (Accounts и далее в Other Accounts) и внизу выбираем пункт «Set up account for assigned access»

clip_image002

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

clip_image004

Всё это хорошо, когда нам нужно настроить один киоск. В случаях, когда необходимо управлять сотнями, а то и тысячами компьютеров, задача усложняется. Попробуем процесс автоматизировать. Для начала необходимо сделать так, чтоб на конечном компьютере (киоске) создалась локальная учетная запись, под которую мы будем подвязывать приложение. Для этих целей нам необходимо создать групповую политику, в которой будет запускаться Startup скрипт, написанный в PowerShell. Суть скрипта заключается в том, чтоб проверить на конечном компьютере наличие служебной учетной записи и, если таковой нету, создать её, после чего отконфигурировать компьютер в автологон на один раз из-под служебной учетки, чтоб она создала свое окружение. После этого можно сделать так, чтоб на киосках либо автологон отрабатывал, либо чтоб кто-то сам выполнял выход в систему (зависит от бизнес потребности).

Итак, написанный мной Logon скрипт содержит комментарии по каждой из секции. Прошу также не забыть включить разрешение исполнения скриптов в PowerShell. Для этого в групповой политике, применяемой на учетные записи компьютеров с киосками, настраиваем разрешение исполнения скриптов (“Computer Configuration” -> “Administrative Templates” -> “Windows Components” -> “Windows PowerShell” -> “Turn on Script Execution” переводим в значение «Enabled», а из выпадающего списка внизу выбираем «Allow local scripts and remote signed scripts» или «Allow only signed scripts» в случае если ваш скрипт будет содержать цифровую подпись, что, естественно, безопаснее).

script.ps1


# Создание переменных под работу скрипта. Планируем создать учетную запись KioskAcc с описанием «KioskAccount» и паролем «P@$$w0rd12» на локальном компьютере (имя компьютера извлекаем)

$usern=“KioskAcc”

$desc=“Kiosk Account”

$pwd=‘P@$$w0rd12’

$Computername=get-contentenv:computername

$computer=[ADSI]WinNT://$Computername

 

# Проверка на то, что учетной записи нет

$Users= ($Computer.psbase.children |

Where-Object {$_.psBase.schemaClassName -eq“User”} |

 Select-Object-expandName)

$blnFound=$Users-contains“KioskAcc”

 

# Если учетка не обнаружена, то создаем её с заданным именем, паролем, описанием и с запретом на смену пароля, а также установлением флага «Passwordneverexpired»

If (!$blnFound)

  {

    $Account=$Computer.create(“User”,$usern)

    $Account.SetPassword($pwd)

    $Account.Put(“Description”,$desc)

    $Flag=$Account.userflags.value -bor0x10040

    $Account.Put(“userflags”,$Flag)

    $Account.SetInfo()

    $GroupN=[ADSI]“WinNT://$Computername/Users,Group”

    $GroupN.Add($Account.Path) 

 

# Настраиваем систему так, чтоб после перезагрузки система единожды выполнила логон из-под указанной учетной записи:

    $testreg=Get-ItemProperty-Path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“DefaultUserName”-ErrorActionSilentlyContinue

    if (-not$testreg)

    {

        New-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“DefaultUserName”-Value“KioskAcc”-PropertyTypeString

    }

     else

    {

        Set-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“DefaultUserName”-Value“KioskAcc”

    }

   

    $testreg=Get-ItemProperty-Path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“DefaultPassword”-ErrorActionSilentlyContinue

    if (-not$testreg) {

        New-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“DefaultPassword”-Value‘P@$$w0rd12’-PropertyTypeString

    }

    else {

        Set-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“DefaultPassword”-Value‘P@$$w0rd12’

    }

 

    $testreg=Get-ItemProperty-Path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“AutoAdminLogon”  -ErrorActionSilentlyContinue

    if (-not$testreg) {

        New-ItemProperty-Path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“AutoAdminLogon”-Value1-PropertyTypeDword

    }

    else {

        Set-ItemProperty-Path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“AutoAdminLogon”-Value1

    }

 

    $testreg=Get-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“AutoLogonCount”-ErrorActionSilentlyContinue

    if (-not$testreg) {

        New-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“AutoLogonCount”-Value“2”-PropertyTypeDWord

    }

    else {   

        Set-ItemProperty-path“HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”-Name“AutoLogonCount”-Value“2”

    }

 

RestartComputer

 

}

 

# С этого момента настраиваем систему так, что при каждом старте будет жестко устанавливаться заранее заданное приложение в качестве окружения для созданного заранее пользователя

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

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

 

Set-AssignedAccess-UserName$usern-AppNameMicrosoft.ZuneMusic

 


Ну, а далее остается только настроить в групповых политиках как должен вести себя киоск на нажатие CTRL+ALT+DEL. Это уже делается в графическом интерфейсе групповых политик и по бизнес требованию.

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

PS: В рамках этой статьи не рассмотрен процесс автоматизации установки сторовских приложений.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.