Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/40: Рейтинг темы: голосов - 40, средняя оценка - 4.85
Заблокирован

Запрет на выключение и перезагрузку компьютера!

07.06.2012, 11:16. Показов 7857. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Такой вопрос, как можно реализовать запрет на выключение компьютера через "Меню" -> "Выключение" и вообще есть ли такая возможность запрета выключения компьютера методом задержки кнопки Power?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2012, 11:16
Ответы с готовыми решениями:

Запрет на выключение компьютера
Здравствуйте! Хотел спросить можно ли сделать запрет на выключение компьютера. Чтобы компьютер нельзя было выключить любыми способами,...

Запрет на выключение компьютера "Гостем"
Всем привет. В системе есть 2 учетки. Первая юзер с админскими правами под паролем, 2-ая Гость, без пароля. Ну вообщем дело такое. Если был...

Скрипт на перезагрузку компьютера
Здравствуйте, не знаю сможете-ли вы мне помочь, облазил интернет ничего не нашел, решил сюда написать. У меня такая проблемка: есть...

29
Заблокирован
29.01.2013, 21:16  [ТС]
Студворк — интернет-сервис помощи студентам
misha-sx, Мне нет разницы, мне просто нужен .EXE файл без ничего, только когда стопнуть выключение и вернуть назад разрешение.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
29.01.2013, 21:23
Цитата Сообщение от inv.DS Посмотреть сообщение
misha-sx, Мне нет разницы, мне просто нужен .EXE файл без ничего, только когда стопнуть выключение и вернуть назад разрешение.
Ну выключают-то через пуск?
0
Заблокирован
29.01.2013, 21:23  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Ну выключают-то через пуск?
Да.
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
29.01.2013, 21:29
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
 
Public Sub EnableStartButton(Optional Enabled As Boolean = True)
    'thIs will enable/disable any window With a little modifaction
    Dim lHwnd As Long
    'найти hWnd
    lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString)
    'Call the enablewindow api And Do the what needs To be done
    Call EnableWindow(lHwnd&, CLng(Enabled))
End Sub
 
Private Sub Form_Load()
    EnableStartButton True 'Кнопка ПУСК не заблокирована
    'EnableStartButton False 'Кнопка ПУСК заблокирована
End Sub
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
29.01.2013, 21:31
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от SoftIce Посмотреть сообщение
Не ищется с этим хендлом кнопка ни по надписи, ни по имени класса("Button")
Смею подправить некоторые неточности в коде. Для ХР почти верно, с некоторыми погрешностями
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Load()
    Me.Caption = "Start button"
    Command1.Caption = "Hide"
    Command2.Caption = "Show"
    Command3.Caption = "Enabled"
    Command4.Caption = "Disabled"
    
   
    'Это для XP
    hwndChild = FindWindowEx(FindWindow("Shell_traywnd", ""), ByVal 0&, "Button", vbNullString)
 
 
    ' Это для win7
   ' hwndChild = FindWindowEx(FindWindow("MSTaskListWClass", ""), ByVal 0&, "Button", vbNullString)
    
   
 
End Sub
Для Win7 класс окна другой. Кнопка не скрывается, но можно её сделать неактивной. Вначале скрываем, потом дезактивируем. Если делать по таймеру, то вполне реально.


У кого ХР, тот может протестить код с подменой кнопки. На Win7 Не работает.
Visual Basic
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
Const WS_CHILD = &H40000000
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const SW_HIDE = 0
Const SW_NORMAL = 1
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Dim tWnd As Long, bWnd As Long, ncWnd As Long
Private Sub Form_Load()
    Dim R As RECT
     tWnd = FindWindow("Shell_TrayWnd", vbNullString)
     bWnd = FindWindowEx(tWnd, ByVal 0&, "BUTTON", vbNullString)
     GetWindowRect bWnd, R
     ncWnd = CreateWindowEx(ByVal 0&, "BUTTON", "Не выключать", WS_CHILD, 0, 0, R.Right - R.Left, R.Bottom - R.Top, tWnd, ByVal 0&, App.hInstance, ByVal 0&)
     ShowWindow ncWnd, SW_NORMAL
     ShowWindow bWnd, SW_HIDE
End Sub
Private Sub Form_Unload(Cancel As Integer)
    ShowWindow bWnd, SW_NORMAL
    DestroyWindow ncWnd
End Sub
3
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
29.01.2013, 21:43
misha-sx, ты предыдущие посты читал, смотрел?
Эта штука не у всех работает.

Добавлено через 9 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
У кого ХР, тот может протестить код с подменой кнопки. На Win7 Не работает.
На ХР работает.

Вместо красивой кнопочки "Пуск" появляется уродливая кнопка "не выключать"
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
29.01.2013, 22:52
inv.DS, извини, но я тебя разочарую.
Заблокируй кнопку ПУСК через API и нажми кнопку WIN или Ctrl+Esc, или ALT+F4 по десктопу. -)) Ну или кнопку на системнике.
А я более чем уверен, если ты не допишешь в свою программу GetCursorPos - и предупредительное сообщение, то юзер подумает "Что за фигня, опять винда глючит" и нажмет кнопку "Reset" ^^

У меня есть такой вариант:
создаешь бат-файл вида:
Bash
1
2
3
4
5
6
@echo off
::Имя твоей программы архивации БД, которую пользователь только что завершил кнопкой "ВЫКЛ. питание".
start "" "c:\Backup.exe"
msg * "Идет архивация баз данных. Еще раз выключишь - получишь в морду!"
::Загрузить оболочку Винды на свое усмотрение.
start "" "explorer.exe"
Сохраняешь с расширением .cmd или .bat

Путь к этому файлу прописываешь в политиках. См. скрин:
ПУСК -> Выполнить -> gpedit.msc -> Конфигурация пользователя -> Конфигурация Windows -> Сценарии ... -> Выход из системы.

У этого способа есть 2 минуса:
1) Архивация все равно прервется. Но этот скрипт ее возобновит.
2) Если ты загрузишь оболочку Explorer и пользователь еще раз ткнет "ВЫКЛ. питание".
На второй раз оно все-таки выключится!
Миниатюры
Запрет на выключение и перезагрузку компьютера!  
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
29.01.2013, 23:17
А еще в политиках есть такое ограничение как:
права на выключение компьютера для каждого пользователя.

Computer configuration -> Windows Settings -> Security Settings -> Local policies -> User rights assignment
Параметр Shut down the system
Но она применяется только после перезагрузки компьютера.

Выход может быть такой:
Создаешь на компьютере еще одного пользователя с паролем.
Заходишь в политику - удаляешь права на выключение у всех пользователей. Добавляешь разрешение новому.
Юзера инструктируешь, что вот - выключение компа только через ярлык на рабочем столе.

В ярлык прописывашь свою прогу, которая проверяет флаг архивации: если завершилась,
выполнить Shutdown с RUNAS - от имени созданного тобой пользователя.
Миниатюры
Запрет на выключение и перезагрузку компьютера!  
1
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
30.01.2013, 21:07
А вот это не пойдет?
1
Заблокирован
30.01.2013, 21:09  [ТС]
На XP именно то, что нужно! Спасибо! На Windows 7 протестирую, может прокатит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2013, 21:09
Помогаю со студенческими работами здесь

Скрипт на перезагрузку компьютера
Здравствуйте, не знаю сможете-ли вы мне помочь, облазил интернет ничего не нашел, решил сюда написать. У меня такая проблемка: есть...

Как сделать перезагрузку компьютера
Как сделать перезагрузку компьютера в Си?Можно сделать так, чтобы комп перезагружался после загрузки винды(не где картинка рабочего стола...

Выключение компьютера в XP
Скажите как выключить комп в XP комп. Всё есть - перезагрузка,выход из windows , завершение сеанса, а как выключить как выключить ни...

Выключение компьютера
Добрый день! Совсем не давно стал компьютер резко выключаться. Например, Включил утром компьютер, поработал за ним минут 20, он...

выключение компьютера
Подскажите пожалуйста как сделать выключение компьютера после завершении работы программы? Тоесть , что бы если пользователя нажал на...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru