Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Отрезать пользователю руки


Автор: Dr.Wisdom 24.1.2008, 17:22
Программа представляет из себя такой интерфейс управления гидросооружением. Соединена с технологической сетью через USB (через специальный комплекс программных средств).

Урезать права пользователю нельзя. Потому как софтина эта много чего требует.
Автоматически запускать её от имени одмина не получается.

Все работает под WinXP.
Ничего кроме этой программы-интерфейса не должно быть доступно.
Потому что люди, которые сидят за этим компом сидят за ним так долго и так скучно,  что только мёртвый не начнёт копаться в настройках.

Надо чтоб они его не убили. Чтобы они вообще не вышли из интерфейса.

Вот помнится видел я такую статейку - вроде прикола какого то - прозрачная форма на весь экран и отключено Ctr и Alt. Ну чтобы не закрыли это окно. Но это было под Win98.

Вот чего то такого хватило бы.

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

Расскажите пожалуйста как это сделать.

Автор: xvr 24.1.2008, 18:46
Цитата(Dr.Wisdom @ 24.1.2008,  17:22)
Программа представляет из себя такой интерфейс управления гидросооружением. Соединена с технологической сетью через USB (через специальный комплекс программных средств).

Урезать права пользователю нельзя. Потому как софтина эта много чего требует.
Автоматически запускать её от имени одмина не получается.

Все работает под WinXP.
Ничего кроме этой программы-интерфейса не должно быть доступно.
Потому что люди, которые сидят за этим компом сидят за ним так долго и так скучно,  что только мёртвый не начнёт копаться в настройках.

Надо чтоб они его не убили. Чтобы они вообще не вышли из интерфейса.

Вот помнится видел я такую статейку - вроде прикола какого то - прозрачная форма на весь экран и отключено Ctr и Alt. Ну чтобы не закрыли это окно. Но это было под Win98.

Вот чего то такого хватило бы.

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

Расскажите пожалуйста как это сделать.

1) Копать в сторону Local Security Policy (Control Panel -> Administrative Tools)
2) Запуск от имени Администратора можно сделать через промежуточную прогу (см. LogonUser & CreateProcessAsUser)
3) Сделать бесправного user'а, сделать ему autologin и запускать прогу через П2.
4) Можно вообще эту прогу прописать вместо explorer'а - она станет user'овским шеллом (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell)
5) Для блокировки Ctrl-Alt-Del см в сторону winlogon & GINA (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DisableCAD)

Автор: jonie 25.1.2008, 00:37
вариант еще это запускать через SCM (сервис)

Автор: xvr 25.1.2008, 10:16
Цитата(jonie @ 25.1.2008,  00:37)
вариант еще это запускать через SCM (сервис)

У сервиса весьма специфичный account, кроме того, у него весьма специфичное взаимодействие с Desktop'ом - может и не пойти.

Автор: jonie 26.1.2008, 18:29
гдето я видел пример запуска блокнота из сервиса, без логинировая в винду конкретного пользователя..... я это имел  в виду.

Автор: xvr 26.1.2008, 18:51
Цитата(jonie @ 26.1.2008,  18:29)
гдето я видел пример запуска блокнота из сервиса, без логинировая в винду конкретного пользователя..... я это имел  в виду.

У меня был опыт запуска приложений из сервера, это было нечто  smile 
Запускалась command line рендерилка MPEG2. 
Во первых ей зачем то понадобился отображаемый desktop. Зачем - до сих пор понять не могу, она на него ничего не выводила, а без него тихо умирала не успев запустится  smile 
Поэтому у сервиса был поставлен флажок 'разрешить взаимодействовать с экраном', а сервис запускался под LocalSystem account
И все было хорошо, пока не заметили, что он (рендер) наплевал на все ключевые и лицензионные файлы и выводит надпись Demo поперек выходого видео  smile Дальнейшие изучения показали, что несмотря на их (ключей и лицензий) наличие, он (рендер) в упор не желает их (лицензий) видеть, дельнейшие изучения (в дебагере) показали, что даже и не пытается  smile 
Дальнейшие пляски с бубном показали, что рендеру не нравится LocalSystem account. Запуск под пользовательским account'ом отключал demo моду но отрубал доступ к desktop'у, что для рендера кончалось фатально  smile 
В результате система работает так:
1) Сервис стартует под LocalSystem и с разрешенным взаимодействием с desktop'ом
2) Перед стартом рендера делается LogonUser и ImpersonateLoggedOnUser

PS. Никто случайно не знает, где можно купить большой шаманский бубен (для отладки программ под Windows)?

Автор: jonie 26.1.2008, 21:19
известно где. . SoftICE или WinDBG ...)
а по поводу рендера это слишком специфичные проблемы... можно было обратиться к производителю за суппортом.

тут же у нас свое по и его при желании можно самим же и поправить.

Автор: Dr.Wisdom 6.2.2008, 15:27
Спасибо.
Пока проблема решилась административно.
За нехваткой времени.
Эти советы помогут в дальнейшем когда они что нибудь сломают.

Автор: W4FhLF 6.2.2008, 18:14
Простой вариант. В Windows есть функция, которая ограничивает движения курсора прямоугольником. Если ограничить движения в пределах окна программы и запретить сворачивать её, то масса обычный пользователей ничего сделать не смогут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)