Pull to refresh

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

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

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

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

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

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

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

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

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

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

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

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

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

Может кто уже решал подобные задачи? вот чувтвую, что решается в три пинка, а я тут развел бог весть что уже.
Tags:
Hubs:
+9
Comments28

Articles

Change theme settings