kiosk-type windows shell или как окружить сотрудников заботой и пониманием

    Не так давно один мой хороший знакомый попросил заблокировать на своих рабочих компьютерах все программы, кроме одной и это был не эксплорер :).

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

    Попробовал заменить windows shell — поставил запуск той нужной программы вместо explorer.exe. Но выяснилось, что во-первых нужная программа работает в графическом режиме, и direct-x, похоже, не успевал инициализироваться и программа жаловалась на его отсутствие. Также, при выходе из программы, пользовательская сессия не заканчивалась.

    Я все еще надеялся решить задачу подручными средствами.

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

    Попробовал вижауал бейсиковый скрипт — но для его запуска нужно запускать эксплорер со всеми вытекающими обстоятельствами (возможно можно как-то без эксплорера, но я не нашел как).

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

    В качестве орудия написания скачал последнюю с++ экспресс вижуал студию, сваял програмку.

    Выяснилось, что если сразу сходу запускать графическую программу, она также жалуется на отсутствие direct-x, а вот если запускать ее из меню — она запускалась молча и с удовольствием.

    Понес ставить этот shell на компы — обнаружил, что код скомпилирован под .net — а ставить его только для моей микро программы я посчитал кощунством. Прийдя домой и порывшись в настройках вижуал студии я понял, что получить чистый win32 код я не смогу — я ж жеж вообще php программер и особого влечения к программирования толстых решений для мелкомягкой платформы просто нету.

    Не особо расстраиваясь я решил сделать то-же самое на win32 api с помощью старой доброй вижуал студии 6.0. Заодно решил добавить немного удобств для себя, любимого — например, конфигурирование списка разрешенных программ через реестр (файл защитить от изменений сложнее), т.е. все настройки этого шелла хранятся в глобальном разделе реестра, недоступном для изменения для простых смертных. Также думаю повесить хук на запуск программ (если какой продвинутый пользователь запустит игру в карты через окно диалога открытия или сохранения файла) и либо прерывать неразрешенные процессы либо не давать им запускаться вовсе — еще не разбирался, как правильней/проще сделать). Еще думаю разобраться с копированием файлов через диалог открытия или сохранения файла — блокировать их тоже, в общем. Также нужно по идее запретить монтировать устройства простому пользователю.

    В общем закат солнца вручную :)

    Может кто уже решал подобные задачи? вот чувтвую, что решается в три пинка, а я тут развел бог весть что уже.
    Поделиться публикацией

    Комментарии 28

    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
          0
          спасибо большое за совет! почитаю обязательно :)

          для решения конкретно данной мне задачи эта часть кода вообще не нужна — в запускаемой программе видеонаблюдения нет вообще никаких диалогов манипуляций с файлами, то есть запустить что либо по идее невозможно. Это я просто подумал о дальнейшем развитии программки. Хотя, если разобраться как запретить запускать, копировать файлы из диалогов открытия и сохранения файлов — можно вообще не беспокоиться о запускаемых программах.
          +4
          могу предложить Lockwin ))). А как думаешь боротся с «тремя педалями» и безопасным режимом с cmd?
          Реестр тут надо хачить неподецки. Может легче поставить линукс?
            –2
            «Скоро линуксом можно будет чистить засорившиеся раковины!»
            Ну сколько можно предлагать линукс в тему и без?
            Все хорошо в меру!
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                спасибо за идею, попробую на Убунту — я ее как раз поставил на свой девелоперский комп. О результатах напишу, когда они будут :)
              0
              о, спасибо огромное!!! похоже что это уже готовое решение моей проблемы! Сегодня обязательно попробую — напишу о результатах.

              по поводу безопасного режима — в моей задаче нужно ограничить свободы пользователей, а не админа компьютера. Насколько я помню, в безопасном режиме по умолчанию разрешен логин только администратора?
              +2
              Присоединяюсь к предыдущему оратору. Если требуемая программа только под винду работает, можно заморочиться решениями от Citrix
                0
                Решения от цитрикса недешевы — но в любом случае спасибо за идею!
                +12
                Так пробовали?
                gpedit.msc -> User Configuration -> Administrative Templates -> System -> Run only allowed Windows applications
                Эта настройка ограничивает только приложения запускаемые из-под эксплорера. Но по горячим клавишам система может запустить Task Manager, что нехорошо. Запрещаем его:
                gpedit.msc -> User Configuration -> Administrative Templates -> System -> Ctrl+Alt+Del Options -> Remove Task Manager

                Особо пронырливые юзеры, читающие Хабр, могут знать, что можно запускать программы из хелпа (к сожалению, не могу найти топик). Но это тоже лечится:
                gpedit.msc -> Computer Configuration -> Administrative Templates -> System -> Restrict these programs from being launched from Help

                Ну и чисто для перестраховки.
                Запретить командную строку:
                gpedit.msc -> User Configuration -> Administrative Templates -> System -> Prevent access to the command prompt
                Запретить правку реестра:
                gpedit.msc -> User Configuration -> Administrative Templates -> System -> Prevent access to registry editing tools


                P.S. Disclaimer: я не админ, не MS Certified специалист, не эксперт по безопасности, поэтому работоспособность вышеприведённого не гарантирую :)
                  0
                  ты просто молодец
                    0
                    в зависимости от приложения, иногда достаточно просто прописать его вместо оболочки.
                    например, в IE есть киоск мод, который убирает всю верхнюю панель
                      0
                      Ну, автор достаточно определённо написал, что в его случае это не сработало.
                        +1
                        прошу прощения
                        *ушел занимать самонаказанием
                      0
                      Вы видимо просто замечательный специалист.

                      А подскажите, это будет работать только для текущего юзера, или можно для всей системы задать?

                      И второй вопрос: нужно ли вносить в список разрешенных приложений всевозможные svchost и прочую нечисть?
                        0
                        На первый вопрос ответ не знаю :)
                        Что же касается второго, то описанные настройки, судя по хелпу, относятся только к процессам, запускаемым из эксплорера; подозреваю, что svchost & Co запускаются системой, т.е. специального разрешения им не нужно.
                          0
                          в оснастке управления групповыми политиками отдельно включаются и выключаются политики пользователя и системы. если не найдете, уточню где именно.
                          0
                          да, пробовал, за исключением блокировки запуска программ из помощи (не знал, что так можно :))

                          спасибо за очень подробное и понятное описание решения!
                          0
                          видимо по своему основному профилю вы разработчик?
                          решение явно не системного администратора ;)
                            0
                            я ж жеж вообще php программер
                            0
                            Блокировать все прелести файлового диалога при открытии-сохранении (а возможностей там огого) можно банально заменив диалог на свой собственный (скачанный из инета?), в котором можно действительно только сохранять и открывать, больше ни-ни
                            • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Бедные юзвера! А еще можно счеты дать в место компа, закрыть в подвал с метровыми железобетонными плитами что бы мобилки не работали, а то вдруг на мобиле ася или джабер какой, а спс и знакомые звонят…
                              Еще можно как лошадям повязки на глаза и кляп в рот что бы другие сотрудники не отвлекали по сторонам не вертелись…

                              Ну есть масса способов других по избавлению от онлайн игрушек и прочей нечести… А если не помогает то думаю никакие защиты не помогут человек такой и его не изменишь…
                                0
                                в данном случе идет речь о видонаблюдении. то есть комп это лишь аналог монитора и охранникам нельзя давать повод отвлекаться от выполнения своих обязанностей. Листом бумаги или счетами тут не обойдешься.

                                в офисах же, согласен, подобные методы неприменимы.

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