Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокировка работы [D6, Win95/98, WinME, WinXP]


Страницы:   1 2

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 и всё... А делается это гораздо проще... И окно типа "...эту хрень админ закрыл..." не выскакивает, а это всё что нужно для нормального блока (ну ещё мыша и остальная клава конечно)... Может я в чём ошибаюсь, но такой вариант у меня работает почти идеально и уже довольно долго и надёжно...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо