Что нового

Как сделать своё окно для входа в ОС ?

urrya

Новичок
Сообщения
159
Репутация
1
Доброго времени суток уважаемые программисты.
Задумалось мне сделать своё(дополнительное) окно для входа в систему.
Всё нормально получается, но есть одно "но", не знаю как заблокировать вызов стандартного
меню выбора при нажатии Ctrl+Alt+Del :scratch:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
HotKeySet('{F1}', 'stop')

Global $Form1 = GUICreate("", 3000,2000,-1,-1)
GUISetBkColor(0x000000)
WinSetOnTop($Form1, "", 1) ; "1" Устанавливает активное окно в состояние "Поверх всех окон".
GUISetState(@SW_SHOW, $Form1)
WinSetTrans($Form1, "", 100) ; Сделать окно полупрозрачными.

While 1
Sleep(100)
WEnd

Func stop()
	Exit
EndFunc


в примере "моё" окно накрывает рабочий стол (потом выведу форму ввода пароля)
но при вызове стандартного меню Ctrl+Alt+Del моё "накрытие" бесполезно, так как
можно просто выйти из системы и ...

помогите отключить (не вручную) или как то заблокировать вызов меню по Ctrl+Alt+Del .
Заранее всем спасибо!
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
urrya

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

HotKeySet('{ESC}', 'stop')

$Form1 = GUICreate("", @DesktopWidth, @DesktopHeight, 1, 1, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x000000)
GUISetState(@SW_SHOW, $Form1)
WinSetTrans($Form1, "", 100) ; Сделать окно полупрозрачными.

While 1
	If ProcessExists('taskmgr.exe') Then ProcessClose('taskmgr.exe')
	WinActivate($Form1)
WEnd

Func stop()
	GUIDelete($Form1)
	Exit
EndFunc   ;==>stop
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
ivsatel Спасибо за пример, но так убивается только процесс "диспетчера задач", а не вызов окна с выбором ...
:-\
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Единственное что я нашел:
http://www.tothepc.com/archives/disable-ctrl-alt-del-options-windows/

Но это все равно не решение вашей задачи.
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
firex вот код бы от той программки бы ;)
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
В том же стили, но вариант :smile:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

HotKeySet('{ESC}', 'stop')

$Form1 = GUICreate("", 400, 300, 1, 1, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x000000)
GUISetState(@SW_SHOW, $Form1)
WinSetTrans($Form1, "", 100) ; Сделать окно полупрозрачными.

Local $hDLL = DllOpen("user32.dll")

While 1
	WinActivate($Form1)
	$coords = WinGetPos($Form1)
	_MouseTrap($coords[0], $coords[1], $coords[0] + $coords[2], $coords[1] + $coords[3])
WEnd

DllClose($hDLL)

Func stop()
	_MouseTrap()
	GUIDelete($Form1)
	Exit
EndFunc   ;==>stop
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
urrya [?]
firex вот код бы от той программки бы
Как я понял она все отключает примерно также, как это делает редактор групповой политики. Один из параметров я там нашел:

6M2qF.png
Скрывает пункт "Сменить пользователя"
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
urrya [?]
вот код бы от той программки
Зачем? Это всё делается через реестр. Вот так отключается диспетчер задач
Код:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] 
"DisableTaskMgr"=dword:00000001
так отключается переключение пользователей
Код:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System] 
"HideFastUserSwitching"=dword:00000001
Остальные пункты ищите в инете.

ivsatel [?]
Клавиатура-то работает ;)
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
InnI
я знаю что всё это можно отключить вручную через реестр, но в первом посте
специально попросил помочь это сделать с помощью Autoit.
А вообще Autoit может работать с реестром? Как?
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
InnI

спс за ссылки на описание функций для работы с реестром
:smile:


Добавлено:
Сообщение автоматически объединено:

тема не закрыта
:smile:
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
urrya
Desktop Locker - блокирует экран. Ставишь галочку "Автозагрузка" и при старте системы блокируется экран своим окном. Главное с паролем не ошибиться, проверив несколько раз, а то последствия будут плачевные.
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
AZJIO
спс конечно, вот мне как раз и надо написать такую программку на Autoit
Не ужели никто не писал скрипт для работы с реестром, как с помощью
Autoit отключить через реестр кнопки в окне "защищённого рабочего стола"?



Добавлено:
Сообщение автоматически объединено:


получать значение параметра научился уже -

Код:
$var = RegRead("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DisableCAD")
MsgBox(4096, ":     ", $var)


главное не забывать суффикс HK ... с 64
:smile:


Добавлено:
Сообщение автоматически объединено:

... работаю -

Код:
Global $var1 = 0, $var2 = 0, $var3 = 0, $var4 = 0, $var5 = 0, $var6 = 0, $var7 = 0, $var8 = 0, $var9 = 0, $var10 = 0
r_egister()
Func r_egister()
$var1 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr")
$var2 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableLockWorkstation")
$var3 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableChangePassword")
$var4 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "undockwithoutlogon")
$var5 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "{S38OS404-1Q43-42S2-9305-67QR0O28SP23}\rkcybere.rkr")
$var6 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "{6Q809377-6NS0-444O-8957-N3773S02200R}\FlfGenpre\FlfGenpre.rkr")
$var7 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "P:\Hfref\BYRT5\Qrfxgbc\rpyvcfr\rqvgpgnyqy.rkr")
$var8 = RegRead("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "HRZR_PGYFRFFVBA")
;$var9 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "undockwithoutlogon")
;$var10 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "undockwithoutlogon")
Select
	Case $var1 = 0
RegWrite("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD","1" )	; Записывает в реестр единственное значение "1"
EndSelect
Select
	Case $var2 = 0
RegWrite("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableLockWorkstation", "REG_DWORD", "1")	; Записывает в реестр единственное значение "1"
EndSelect
Select
    Case $var3 = 0
RegWrite("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableChangePassword", "REG_DWORD", "1")	; Записывает в реестр единственное значение "1"
EndSelect
Select
	Case $var4 = 0
RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "NoLogoff", "REG_DWORD", "1")	; Записывает в реестр единственное значение "1"
EndSelect
Select
	Case $var5 = "13 00 00 00 00 00 00 00 6a 00 00 00 f2 4f 09 00 0c 81 a0 3e 7a 0c 8a 3e 5b 72 bb 3e a4 24 d5 3e cc 1e 15 3e d0 fe a9 3d 1a 1e d3 3e ad 2b 5e 3e 00 00 80 bf 00 00 80 bf 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
RegWrite("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "{S38OS404-1Q43-42S2-9305-67QR0O28SP23}\rkcybere.rkr", "REG_BINARY", _
"13 00 00 00 00 00 00 00 6c 00 00 00 80 5c 09 00 0c 81 a0 3e 7a 0c 8a 3e 5b 72 bb 3e a4 24 d5 3e cc 1e 15 3e d0 fe a9 3d 1a 1e d3 3e ad 2b 5e 3e 00 00 80 bf 00 00 80 bf 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ")	; Записывает в реестр единственное значение "..."
EndSelect
Select
	Case $var6 = "13 00 00 00 00 00 00 00 09 00 00 00 85 8c 02 00 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 "
RegWrite("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "{6Q809377-6NS0-444O-8957-N3773S02200R}\FlfGenpre\FlfGenpre.rkr", "REG_BINARY", _
"13 00 00 00 00 00 00 00 0a 00 00 00 af 94 02 00 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 "); Записывает в реестр единственное значение "..."
EndSelect
Select
	Case $var7 = "13 00 00 00 03 00 00 00 04 00 00 00 55 37 00 00 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf ff ff ff ff 90 d4 9c 8f 66 23 cf 01 00 00 00 00 "
RegWrite("HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count", "P:\Hfref\BYRT5\Qrfxgbc\rpyvcfr\rqvgpgnyqy.rkr", "REG_BINARY", _
"13 00 00 00 04 00 00 00 05 00 00 00 40 49 00 00 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf 00 00 80 bf ff ff ff ff 50 9e 71 bd 66 23 cf 01 00 00 00 00 "); Записывает в реестр единственное значение "..."
EndSelect

EndFunc


пока только 3 кнопки убрал, но главное это возможно, так что тема закрыта
:IL_AutoIt_1:
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
"Главное сначала проверить разрядность системы, и из этого определить суффикс."
Ну это само-собой разумеется, просто я уже почти забыл, что ещё есть и 32 разрядность ОС
:smile:


Добавлено:
Сообщение автоматически объединено:

Готово, не прошло и 24 часов :blum:
В архиве исходник и 4 файла *.txt нужные для работы скрипта.
Пользуйтесь пожалуйста, кому понадобится.
Правда работает только в одну сторону, для восстановления кнопок
отредактируйте исходник
;)


Добавлено:
Сообщение автоматически объединено:

Код писал на и для Windows 7 x64 ;)


Добавлено:
Сообщение автоматически объединено:


Новый архив залил.
Исправил "грязь", добавил второй(отредактированный первый) исходник
для восстановления кнопок на "защищённом рабочем столе".
;)
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
urrya
Залейте пожалуйста на другой файловый обменник(Отсюда скачать не получается).
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
urrya [?]
HKEY_USERS64\S-1-5-21-1265459106-3028646723-2073955745-1000
Данный раздел - это ваш личный раздел - конкретного пользователя на конкретной машине. Если вы хотите, чтобы ваш скрипт работал и у других, читать и писать нужно в HKEY_CURRENT_USER.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
InnI
А не наоборот случаем? :smile:
Как то не придавал этому особого внимания, оказалось совсем нет так.

6MXex.png
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
firex
Когда вы входите в систему, настройки из вашего личного HKEY_USERS копируются в HKEY_CURRENT_USER, а после выхода - "сливаются" обратно. Посмотрите у себя в реестре - разве у вас есть раздел "HKEY_USERS\S-1-5-21-1265459106-3028646723-2073955745-1000" ? У вас будет подобный, но с другими цифрами.
 
Верх