Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/121: Рейтинг темы: голосов - 121, средняя оценка - 4.78
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511

Заблокировать Ctrl+Alt+Del

03.06.2011, 17:00. Показов 23498. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, попробовал повесить глобальный хук на Alt (LMenu, RMenu и Menu) и на Delete - ничего не сработало. У кого-то есть гарантированно рабочий пример перехвата и блокировки (не через реестр)?

P.S. Не вирус я пишу.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2011, 17:00
Ответы с готовыми решениями:

Заблокировать Ctr + alt + del часть 2
Тема была закрыта в связи с обсуждением написания вредоносного ПО. Народ , подскажите пожалуйста , как решить проблему с этим кодом . ...

Как заблокирвоать комбинацию ctrl+alt+del?
Собственно вопрос в названии. Ни что из того что я нашёл в интернете не помогло - оно по сути просто блокирует диспетчер задач как правило...

Заблокировать комбинацию кнопок Alt + Tab и Alt + Esc?
Как временно заблокировать комбинацию кнопок Alt + Tab и Alt + Esc?

23
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
03.06.2011, 17:05
Не вирус я пишу.
А что Вы пишите7
0
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
03.06.2011, 17:07  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
А что Вы пишите7
Если это относится к делу, то работнику надо запретить закрывать рабочую программу. При этом добавляем программу в автозапуск и при закрытии выключаем компьютер.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
03.06.2011, 17:22
Почитай это
И тут почитай
0
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
03.06.2011, 17:27  [ТС]
Casper-SC, 1. Windows XP - не пойдет
2. Надо не на логон, а просто при запущенном приложении.
0
Заблокирован
03.06.2011, 17:43
Диспетчер задач можно вызвать Ctrl+Shift+Esc, а также простым нажатием правой кнопкой мышки на панели задач.
Вот... может что придумаешь.
Заблокировать клавишу Win
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System.Runtime.InteropServices;
    using System.Diagnostics;
 
    public partial class Form1 : Form
    {
        [StructLayout(LayoutKind.Sequential)]
        private struct KBDLLHOOKSTRUCT
        {
            public Keys key;
            public int scanCode;
            public int flags;
            public int time;
            public IntPtr extra;
        }
        private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr SetWindowsHookEx(int id, LowLevelKeyboardProc callback, IntPtr hMod, uint dwThreadId);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool UnhookWindowsHookEx(IntPtr hook);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr CallNextHookEx(IntPtr hook, int nCode, IntPtr wp, IntPtr lp);
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr GetModuleHandle(string name);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern short GetAsyncKeyState(Keys key);
        private IntPtr ptrHook;
        private LowLevelKeyboardProc objKeyboardProcess;
 
 
        public Form1()
        {
            InitializeComponent();
        }
        protected override bool ProcessDialogKey(Keys keyData)
        {
            switch (keyData)
            {
                case Keys.Control:
                    return true;
                default:
                    return base.ProcessDialogKey(keyData);
            }
        }
        private IntPtr captureKey(int nCode, IntPtr wp, IntPtr lp)
        {
            if (nCode >= 0)
            {
                KBDLLHOOKSTRUCT objKeyInfo = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lp, typeof(KBDLLHOOKSTRUCT));
                if (objKeyInfo.key == Keys.RWin || objKeyInfo.key == Keys.LWin) //вот тут и блокируется WinKey {   
                    return (IntPtr)1;
            }
 
            return CallNextHookEx(ptrHook, nCode, wp, lp);
        }
 
 
        //заблакировать
        private void button1_Click(object sender, EventArgs e)
        {
            ProcessModule objCurrentModule = Process.GetCurrentProcess().MainModule;
            objKeyboardProcess = new LowLevelKeyboardProc(captureKey);
            ptrHook = SetWindowsHookEx(13, objKeyboardProcess, GetModuleHandle(objCurrentModule.ModuleName), 0);
 
        }
        //разблокировать
        private void button2_Click(object sender, EventArgs e)
        {
 
            if (ptrHook != IntPtr.Zero)
            {
                UnhookWindowsHookEx(ptrHook);
                ptrHook = IntPtr.Zero;
            }
 
        }
2
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
03.06.2011, 17:54
Лучший ответ Сообщение было отмечено как решение

Решение

Вариант конечно глупый, но все таки. При запуске приложения, оно запускает диспетчер задач как скрытый процесс. Если пользовательно попытается его открыть, то у него не получится, т.к. он уже открыт. А при закрытии процесс убивается.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Windows.Forms;
using System.Diagnostics;
 
namespace WindowsFormsApplication27
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
            this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
        }
 
        void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Process.GetProcessesByName("taskmgr")[0].Kill();
        }
 
        void Form1_Load(object sender, EventArgs e)
        {
            Process p = new Process();
            p.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System);
            p.StartInfo.FileName = "taskmgr.exe";
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();
            this.Focus();
        }
    }
}
3
Заблокирован
03.06.2011, 18:04
Цитата Сообщение от Петррр Посмотреть сообщение
При запуске приложения, оно запускает диспетчер задач как скрытый процесс.
Можно его совсем отключить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
        //отключить Диспетчер задач
        private void button1_Click(object sender, EventArgs e)
        {
            Microsoft.Win32.RegistryKey regkey;
            string keyValueInt = "1";
            string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
 
            try
            {
                regkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(subKey);
                regkey.SetValue("DisableTaskMgr", keyValueInt);
                regkey.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
 
        }
        //включить Диспетчер задач
 
        private void button2_Click(object sender, EventArgs e)
        {
            Microsoft.Win32.RegistryKey RegKeyDel = Microsoft.Win32.Registry.CurrentUser;
            try
            {
                RegKeyDel.DeleteSubKeyTree("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
                RegKeyDel.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
 
        }
2
03.06.2011, 18:06

Не по теме:

Мне кажется, что тема становится пособием начинающему вирусописателю.

0
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
03.06.2011, 18:08  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение

Не по теме:

Мне кажется, что тема становится пособием начинающему вирусописателю.

Бывает

Твой вариант меня вполне устроил - а диспетчер в вирусах лучше блокировать через реестр. При правке из-под программы, кстати, не требует прав администратора!
0
03.06.2011, 18:12

Не по теме:

Петррр, вот скажу честно мне этот код пригодился. На работе на компе сидел червь, который отключил Диспетчер Задач и доступ к реестру. Я Диспетчер Задач включил программно. И только потом смог завершить вредоносный процесс и почистить винт антивирусом.

0
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
03.06.2011, 20:28
можно каждую секунду закрывать его процесс)))
Это реально работает)
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
04.06.2011, 13:48
открываем файл диспетчера задач на чтение и не закрываем. и все.

Добавлено через 8 минут
C#
1
FileSystem.FileOpen(1, "C:\\WINDOWS\\system32\\taskmgr.exe", OpenMode.Random)
VB.NET
1
  FileOpen(1, "C:\WINDOWS\system32\taskmgr.exe", OpenMode.Random)
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.06.2011, 12:43
Ciberst, разве в семерке это работает? Вроде нет.
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
18.06.2011, 13:17
Памирыч, не проверял
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.06.2011, 13:20
Проверял, правда на паре машин. Не сработало.
Петррр, дело в том, что диспетчер задач сидит в трее, ничего не мешает его закрыть по правой кнопке - закрыть, а потом он выходит уже без проблем.
0
 Аватар для ushim
179 / 180 / 55
Регистрация: 01.06.2011
Сообщений: 507
18.06.2011, 13:25
Цитата Сообщение от Смирняга Посмотреть сообщение
можно каждую секунду закрывать его процесс)))
Это реально работает)
Тогда это лучше делать при нажатии на эти горячие клавиши, чтобы процессор лишний раз зря не перегружать. Всё такие программа для работы. Только тут надо придумать, как быть с rigthClick по панели.

Добавлено через 53 секунды
по моему в реестре прописано меню, которое отображается при клике по панели виндовс, программно убрать от туда ссылку на диспетчер задач.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.06.2011, 13:31
ushim, это надо ставить глобальный хук. Я ставил, Альт-Ктрл-Дел все равно вызывается.
Может нужно было низкоуровневый ставить. Диспетчер на момент работы приложения можно вовсе не отключать, а затуманить системе мозги. Код правда на Бейсике:
VB.NET
1
2
3
4
5
6
7
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe", "Debugger", "")
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe", "Debugger", "C")
    End Sub
1
 Аватар для ushim
179 / 180 / 55
Регистрация: 01.06.2011
Сообщений: 507
18.06.2011, 13:39
Памирыч, зачем глобальный хук? Если этот код вписать в программу с которой должен человек работать, то тут только ловим нажатие клавиш на окне программы. А если программа теряет фокус, то смысл блокировать диспетчер задач, раз работник гуляет по компьютеру?

А вот на SetValue в моей программе после её компиляции ругается антивирус. Trojan.generic. (Антивирус Касперского 2010).

Не по теме:

Eset Nod 32 и аваст такой код пропускают мимо ушей :)

0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.06.2011, 15:16
Цитата Сообщение от ushim Посмотреть сообщение
Антивирус Касперского 2010
ИМХО, правильно и делает.
Наш код вполне можно расценивать как вредоносный.
У меня Каспер шестой, не следит совсем, хоть в настройках есть мониторинг системного реестра.

Цитата Сообщение от ushim Посмотреть сообщение
А если программа теряет фокус, то смысл блокировать диспетчер задач,
Тогда вообще нет резона блокировать диспетчер, какая разница - откуда он был запущен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2011, 15:16
Помогаю со студенческими работами здесь

Обработать нажатие DEL и Ctrl+V
Ребята помогите пожалуйста!!!!! у меня такая проблема, мне нужно чтобы у меня распознавалась кнопка delete и комбинации клавиш ctrl v...

Отключение ctrl+alt+delete в windows 10
Доброго утра! :) Кто-нибудь знает, как отключить или заблокировать сочетание клавиш ctrl+alt+delete в win 10. И запустить форму от...

ReadKey() не реагирует на нажатия Alt,Ctrl,Shift
Не реагирует на нажатия Alt,Ctrl,Shift . ConsoleKeyInfo press; Console.WriteLine("введите символы :"); ...

Разворот формы на весь экран, включая таскабар, запрет Win+D, Ctrl+Alt+Del
Увидел подобное в WinCC, - форма разворачивается на весь экран и никак не реагирует на стандартные средства сворачивания. Как такое...

Mouse Click + ALT/CTRL
Есть PictureBox. Как в обработчике PictureBox_Mouse_Click узнать был ли нажат CTRL либо ALT во время клика?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru