Autor Wątek: [C#/C++] Blokowanie procesów  (Przeczytany 3448 razy)

Offline Hextor

  • Użytkownik

# Styczeń 18, 2009, 13:53:33
Witam, mam drobny problem, potrzebuje zablokować klawiaturę i mysz, używam do tego następującego kodu:

[DllImport("user32.dll")]
private static extern bool BlockInput(bool fBlockIt);

Wszystko łądnie działa, ale wystarczy wcisnąć ctl+alt+del i się odblokowywuje. Próbowałem, na czas blokady wyłączyć ctrl+alt+del następującym kodem:

RegistryKey regkey;
            string keyValueInt = "1";
            string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";

                regkey = Registry.CurrentUser.CreateSubKey(subKey);
                regkey.SetValue("DisableTaskMgr", keyValueInt);
                regkey.Close();

No i też niby działa, tylko że wyskakuje okienko o tym że ctrl+alt+del jest zablokowany, ale niestety blokada klawiatury i myszy się wyłancza.

Ktoś wie jak to zrobić, aby user nie mógł ominąć blokady w prosty sposób? Program piszę w C#, ale jeżeli ktoś umieście kod w c++ to nie będzie problemu, gdyż sam sobie przetłumacze.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

poopa

  • Gość
# Styczeń 18, 2009, 16:15:54
A sprawdzales to poza trybem debug?

Offline Esidar

  • Użytkownik

# Styczeń 18, 2009, 16:35:00
Zablokowanie klawiatury i myszy ? Twój program to albo szczyt upierdliwego interface'u albo wirus.

Offline BTM

  • Użytkownik

# Styczeń 18, 2009, 16:56:33
Zablokowanie klawiatury i myszy ? Twój program to albo szczyt upierdliwego interface'u albo wirus.

Albo coś do systemu reklamowo-informacyjnego z zapętloną jedną informacją.

Tym niemniej - zgodzę się, że nie jest to najlepsze rozwiązanie, bo jeżeli okaże się, że gdzieś w kodzie masz while(1){} to tylko reset Cię uratuje.

Offline Xion

  • Moderator
    • xion.log

# Styczeń 18, 2009, 16:59:54
Ctrl+Alt+Del jest właśnie m.in. po to, aby móc poradzić sobie z procesem, który się zepsuł i gdy żadne inne środki nie pomagają. Podejrzewam, że zablokowanie tego jest prawie niemożliwe bez grzebania w jądrze systemu.

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Styczeń 19, 2009, 13:54:45
Ctrl+Alt+Del to przede wszystkim na PC sygnał sprzętowy (m.in. dlatego nie można go wywołać przy zdalnym logowaniu lub przez jakiś program), więc jego zablokowanie jest co najmniej bardzo trudne. W sumie chyba jest niemożliwe ;)

Offline skowronkow

  • Użytkownik
    • skowronkow devsite

# Styczeń 19, 2009, 14:17:30
Tak jest to bardzo trudne, jednak można to obejść innym, znacznie prostszym sposobem (ale chyba zachowam tą informację dla siebie, gdyz nie spotkalem sie jeszcze z sensownym rozwiazaniem bazującym na zablokowaniu ctrl alt del) ;)

Offline Hextor

  • Użytkownik

# Styczeń 24, 2009, 21:29:02
Heh już zapomniałem o tym wątku, bo dawno rozwiązałem problem.  :)

Program który pisałem to wcale nie żaden wirus, ani reklama, tylko program za zaliczenie na studia z ssi. Akurat tak podzieliliśmy się pracą z kolegami że mi przypadło napisanie administracji. Tematem pracy był program monitorujący i zarządzajacy siecią lokalną, i akurat blokada wejścia moze być przydatna jezęli użytkownik robi coś zakazanego w celu przyłapania go na gorącym uczynku (ale zawsze moze reset wcisnać) lub chociażby gdy uczniowie na infie mają pisać test, nauczyciel blokuje sobie zdalnie wszystkie kompy, wpuszcza klase, rozdaje zadania, czas start i odblokowuje wszystkim naraz. Program już oddany, ale ocena bedzie w środe dopiero.

A teraz rozwiązanie problemu, niestety pod vistą ta się to obejść, pod xp jeszcze nikt nie obszedł ale tylko kilka osób próbowało. A zasada działania jest prosta wystarczy stworzyć 2 wątek w nim pętle która cały czas odpala funkcje blokującą. Nawet jak ktoś wciśnie sobie ctrl+alt+del to i tak nie zdąrzy nic zrobić bo sie znowu zablokuje, wadą jest tylko niepotrzebne obciażanie komputera. A blokade ctl+alt+del też się da zmieniając wpis w rejestrze widnowsa, ale akurat po mimo blokady okna z procesami blokada też jest przerywana, wiec sie ta opcja nie przydała w naszym projekcie.