![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировка работы [D6, Win95/98, WinME, WinXP]
Nick_Omsk © (2003-08-16 22:18:00)
Пишу прогу для интернет-кафе. По истечении времени комп перегружается. Многих заказчиков не устраивает, хотят чтобы как-нибудь блокировалась работа. Пробовал полноэкранное приложение чтобы всегда было поверх окон, но такие же окна могут переключаться между собой. Пробовал ShellExecute(..."Rundll32.exe keyboard,disable"...), но включить не могу, может кто-нибудь посоветует что-нибудь, буду рад
Groove (2003-08-25 18:51:00) [1]
Infinity1, а вы не могли бы поделиться кодом блокировки/разблокировки??? всё равно программа фриварная... :)
Infinity1 (2003-08-25 18:38:00) [2]
Я блокировал в своей программе хуком. Вроде 100% блокирует и никак не разблокировать. Программу можно скачать на www.oceanbyte.times.lv
Groove (2003-08-25 18:29:00) [3]
хмм... давольнотаки умная беседа, а всёже кто-нибудь может представить рабочий код блокировки Windows NT/2k/XP???
DeadMeat (2003-08-24 11:07:00) [4]
>Dobriy
> написать своё подобие...
Это вовсе не обязательно... надо просто открыть файл Taskmgr.exe с эксклюзивным правом пользования и всё... После этого его не запустит никто, а в CAD его не будет благодаря записи в реестре... Кстати, и окно с сообщением не выскакивает... А на всё остальное - WH_KEYBOARD_LL
Dobriy (2003-08-24 10:33:00) [5]
Люди я же дал ссылку на работающий пример.
Для теч кто не понимает с++ объясняю:
1. CAD блокируется в реестре отключением TaskManeger`а
при нажатии на CAD выдаётся сообщение что у вас нет прав воспользоваться этой программой
2.остальные комбинации блокируются хуком
всё просто и работает
но кому не нравится сообщение могу предложить другой вариант:
написать своё подобие Taskman и в режиме SafeMode windows заменить им стандартный TM.
DeadMeat (2003-08-23 16:46:00) [6]
>Song
Вопервых, я не говорил про Win98, а только про WinXP (если речь идёт о CAD, при включённом Use Welcome Screen и т.п.) и Win2k (если речь идёт о Ctrl+Esc, Ctrl+Shift+Esc, Alt+Tab и пр.) Повнимательней вчитаётесть в моё замечание...
Song (2003-08-23 15:29:00) [7]
2DeadMeat © (23.08.03 14:01) [23]
Не обмынывайте людей. Никаким хуком нельзя перехватить, а тем более запретить CAD начиная с w98
Song (2003-08-23 15:27:00) [8]
>>Кстати, хуки ctrl+shift+esc перехватывают?
Да, WH_KEYBOARD_LL
2ALL
все про джину говорят, приведите наконец пример, как нужно модицифировать джину, чтобы CAD блокировался. А то все только на эту джину пиняют (то бишь у кого-то услышали и давай друг другу передавать), а привести пример никак.
DeadMeat (2003-08-23 14:01:00) [9]
>Дмитрий В. Белькевич
Я же уже писал же, что перехватывают..., т.е. пепехватыва ет... WH_KEYBOARD_LL перехватывает всё, что угодно... Даже CAD, если в WinXP стоит Use Welcome Screen... И не только перехватывает, но и запретить может... По крайней мере у меня...
Дмитрий В. Белькевич (2003-08-22 20:37:00) [10]
> Я тоже сталкивался с подобным, писал для клуба.
> Во-первых, если работаетшь в 2000 или ХР, то масса вещей
> есть в самой операционке. Посмотри политику безопасности
> для 2К, там можно отменить активацию диспетчера задач, запуск
> некоторых программ, короче много всякого
Это админ может сделать сам для себя? Или для другого админа? Многие игры (например, cs) не запускаются под xp из-под юзерского аккаунта. Хотя полный доступ к реестру пооткрывал. Правда, нужно было filemin"ом и регмоном посмотреть куда cs лезет, и куда его не пускают. Да не было тогда регмона под xp.
> Правы старшие товарищи, есть уже и готовые программы, только
> вот исходников их я не видел сколько ни искал :=(
Ну, блокировку клавы под 9х я выложил. Под 2000+ я так понял, это не очень актуально. Кстати, хуки ctrl+shift+esc перехватывают? Или может можно просто заткнуть диспетчер задач, стерев что?
Виталий (2003-08-22 19:31:00) [11]
Я тоже сталкивался с подобным, писал для клуба.
Во-первых, если работаетшь в 2000 или ХР, то масса вещей есть в самой операционке. Посмотри политику безопасности для 2К, там можно отменить активацию диспетчера задач, запуск некоторых программ, короче много всякого.
Во-вторых, действительно можно через HOOK блокировать клавиатуру. Серверная часть у админа, клиентская на компах и т.п. Правда такая программа может легко сниматься в 98, и тут ниче не поделаешь, недочет операционки. Программа может только перед своей "смертью" сообщить админу что над ней надругались.
И в третьих, надо обязательно ставить на админовскую машину NT-операционку. Тогда по правам пользователей можно и от записи на винт защититься и т.п.
З.Ы. Будешь в клубе - застрели за меня парочку демонов в ДООМе
Правы старшие товарищи, есть уже и готовые программы, только вот исходников их я не видел сколько ни искал :=(
Дмитрий В. Белькевич (2003-08-22 15:37:00) [12]
Народ, что паритесь? Исходники выложены. Все уже два года как работает. А на счет десятков процессов - жалко мне процессора. Итак, бедняга, в играх потеет, пусть хоть немного отдохнет. А ты ему - процессы.
Карелин Артем (2003-08-22 11:37:00) [13]
Запустить десяток потоков с наивысшим приоритетом. Пусть хоть 2+2 считают. Главное чтобы они все процовое время сьели.
Jiming (2003-08-22 09:40:00) [14]
Привет всем!
Тема старая - и давно уже кем то решенная(в разных вариантах)
Сам 1.5 года назад - занимался этой темой(Управлением компьютерным залом) - ради собственного интереса.
Под 98 - ставил СкеенСервер
Под 2000/ХР - реализовал - Gina.dll
А может стоит пойти уже известным путем - как на западе -
Открыть OpenSource - проэкт - ну и совместными усилиями сделать
работоспособную систему.
Jiming@mail.ru
Дмитрий В. Белькевич (2003-08-22 01:24:00) [15]
Для DeadMeat. Да, увидел в другой ветке. Там же человек, что можно CAD заблокировать. Буду попробовать.
DeadMeat (2003-08-21 16:40:00) [16]
> Дмитрий В. Белькевич
За XP не скажу, а в 98 - очень критично.
Оно и понятно, что критично, но там это очень просто, а под Win2k/XP и Alt-Tab, и Alt-Esc, и Ctrl-Esc и все подобные комбинации (кроме CAD) блокируются просто на ура через WH_KEYBOARD_LL...
Дмитрий В. Белькевич (2003-08-21 05:27:00) [17]
Код неоптимальный. Но работает. Оптимизации не поддается - глюки, если сразу после чтения из памяти делать запись. Mov"ами или or"ами - без разницы. Всё виснет.
> я не понимаю зачем блокировать "три пальца" по Win2k/XP...??
За XP не скажу, а в 98 - очень критично. А в XP будет полезна блокировка Alt-Tab, Alt-Esc, т.к. тот же страйк очень плохо эти комбинации переносит.
Вот, кто бы всё это счастье под wdm переписал, было бы приятно.
Dobriy (2003-08-21 05:26:00) [18]
Вот ссылка http://www.sources.ru/cpp/system/ctrl_alt_del_winxp.shtmlна работающий пример под XP блокировки Alt-tab, CAD и других комбинаций.
правда он на visual c++
Дмитрий В. Белькевич (2003-08-21 05:15:00) [19]
;VXD blocking ctrL+alt+del, ctrl+esc, ctrl+tab etc
;(с) All Rights Reserved Dmitry Belkevich dmbel@mail.ru
;Distributed As Is without any guaranties.
;VXD блокирует ctrL+alt+del, ctrl+esc, ctrl+tab, и т.д.
;(с) Все права Дмитрий Белькевич dmbel@mail.ru
;Распространяется "как есть" без всяких гарантий.
MASM=1
.386p
.XLIST
INCLUDE VMM.Inc
INCLUDE vkd.Inc
.LIST
Declare_Virtual_Device Keylock, 1, 0, Keylock_Control, Undefined_Device_ID ,,,
VxD_REAL_INIT_SEG;
;Код инициализации в реальном режиме для win95
BeginProc VxD_Real_Init_Proc
mov ax, Device_Load_Ok
mov bx, 0
mov edx,0
mov si, bx
ret
EndProc VxD_Real_Init_Proc
VxD_REAL_INIT_ENDS
VxD_LOCKED_CODE_SEG
BeginProc KeyLock_KbdProc
cmp CL, 42
je shiftdown
cmp CL, 54
je shiftdown
cmp CL, 29
je ctrldown
cmp CL, 56
je altdown
cmp CL, 42+128
je shiftup
cmp CL, 54+128
je shiftup
cmp CL, 29+128
je ctrlup
cmp CL, 56+128
je altup
cmp cl, 15
je tabdown
cmp cl, 15+128
je tabup
cmp cl, 83
je deldown
cmp cl, 83+128
je delup
cmp cl, 1
je escdown
cmp cl, 1+128
je escup
jmp l3
escdown:
test AltState, 1
jne l1
test CtrlState, 1
je l3
l1:mov cl, 91
jmp l3
escup:
test AltState, 1
jne l2
test CtrlState, 1
je l3
l2:mov cl, 91+128
jmp l3
tabdown:
test AltState, 1
je l3
mov cl, 91
jmp l3
tabup:
test AltState, 1
je l3
mov cl, 91+128
jmp l3
deldown:
test AltState, 1
je l3
test CtrlState, 1
je l3
mov cl, 91
jmp l3
delup:
test AltState, 1
je l3
test CtrlState, 1
je l3
mov cl, 91+128
jmp l3
shiftdown:
mov ShftState, 1
jmp l3
ctrldown:
mov CtrlState, 1
jmp l3
altdown:
mov AltState, 1
jmp l3
shiftup:
mov ShftState, 0
jmp l3
ctrlup:
mov CtrlState, 0
jmp l3
altup:
mov AltState, 0
jmp l3
l3:
push eax
mov eax, dword ptr Prev_KbdProc
call dword ptr eax
pop eax
clc
ret
EndProc KeyLock_KbdProc
BeginProc KeyLock_Device_Init
;Устанавливаем наш перехват
GetVxDServiceOrdinal eax, VKD_Filter_Keyboard_Input
mov esi, offset32 KeyLock_KbdProc
VMMCall Hook_Device_Service
;и получаем предыдущий обработчик
mov dword ptr Prev_KbdProc, esi
clc
ret
EndProc KeyLock_Device_Init
BeginProc KeyLock_Control
Control_Dispatch Init_Complete, KeyLock_Device_Init
clc
ret
EndProc KeyLock_Control
VxD_LOCKED_CODE_ENDS
VxD_LOCKED_DATA_SEG
ShftState db 0
CtrlState db 0
AltState db 0
Prev_KbdProc dw 0
VxD_LOCKED_DATA_ENDS
END
DeadMeat (2003-08-20 17:37:00) [20]
А я не понимаю зачем блокировать "три пальца" по Win2k/XP...?? Ведь достаточно заблокировать сам TaskManager и всё... А делается это гораздо проще... И окно типа "...эту хрень админ закрыл..." не выскакивает, а это всё что нужно для нормального блока (ну ещё мыша и остальная клава конечно)... Может я в чём ошибаюсь, но такой вариант у меня работает почти идеально и уже довольно долго и надёжно...