Завдання 1

Написати програму створення ключа залежно від вказаної вітки. Рядковий тип даних повинен зберігати зведення про прізвище розробника та його e-mail. З причини відсутності деяких ключів розроблене застосування виконуватися не повинне. При завершенні роботи застосування повинна проводитися дерегістрація, тобто програмне видалення ключів і гілок, створених програмою.

1. Контекстне меню панелі завдань, меню папок і файлів. (Вітка HKCU SoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrer HKCR* shellexContextMenuHandlers, HKCRDirectory shell, HKCRFolder shell, ключ: NoTrayContextMenu).

2. Діалогове вікно відкриття і збереження файла. (Вітка HKCU SOFTWAREMicrosoftWindowsCurrentVersionPoliciescomdlg32, розділ "PlacesBar", параметри: NoPlacesBar, NoBackButton, NoFileMru).

3. Диспетчер завдань Windows XP і “синій екран смерті” Windows XP. (Вітка HKCUSoftwareMicrosoftWindowsCurrentVersionPolicies System та HKLMSYSTEMCurrentControlSet Servisesi8042prtParameters відповідно. Ключі: DisableTaskMgr та CrashOnCtrlScroll).

4. Керування годинником, яке включає: синхронізацію системного годинника, вибір time-серверів, прикрасу годинників. (Вітки: HKLMSYSTEMControlSet001ServicesW32TimeTimeProvidersNtpClient, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionDateTimeServers, HKCUControl Panel International. Ключі: SpecialPollInterval, sTimeFormat).

5. Дискові операції по перевірці диска: по автоматичному виправленню помилок, зміні часу очікування. (Вітки: HKEY_USERSDEFAULT SOFTWAREMicrosoftWindowsCurrentVersion AppletsCheck Drive та HKLMSYSTEMCurrentControlSetControlSession Manager. Ключі: Auto-Chk та AutoChkTimeOut).

6. Повідомлення при завантаженні, автозавантаженні. (Вітки HKLMSoftwareMicrosoftWindowsNT CurrentVersion Winlogon та HKLM SoftWareMicrosoftWindowsCurrentVersion. Ключі: LegalNoticeCaption, LegalNoticeText, RunOnce, RunOnceEx, RunServices, RunServicesOnce, RunServices, DisableLocalMachineRun, DisableLocalMachineRunOnce, DisableCurrentUserRun).

7. Заборона на доступ до вмісту вибраних дисків. (Вітка HKEY_ CURRENT_USERSoftwareMicrosoft WindowsCurrentVersionPolicies Explorer. Ключ NoViewOnDrive). Організувати діалог по вибору найменувань маскованих дисків.

8. Панель перемикача завдань. (Вітка HKEY_CURRENT_ USERControl PanelDesktop. Ключі: CoolSwitch, CoolSwitchRows та CoolSwitchColumns).

9. Реєстраційні дані. (Вітка HKEY_LOCAL_MACHINE SOFTWARE MicrosoftWindows NTCurrentVersion).

10. Паролі та безпека. (Вітка HKLMSOFTWAREMicrosoft WindowsCurrentVersionPoliciesNetwork, параметри: NoDialIn, Disable-PwdCaching, HideSharePwds, NoFileSharing, NoFileSharingControl, NoPrintSharing, NoPrintSharingControl).

 

Приклад 29.1. Написати програму додавання в вітку HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer ключа NoTrayContextMenu.

Файл ресурсів програми наведено у лістингу 29.2.

 

Лістинг 29.2. Файл ресурсів:

#define IDM_CREATEKEY 1

#define IDM_DELETEKEY 2

#define IDM_ABOUT 3

#define IDM_EXIT 4

#define IDB_MAIN 5

#define IDI_ICON 22

IDI_ICON ICON DISCARDABLE MOVEABLE LOADONCALL "butterfly.ico"

FirstMenu MENU

{

POPUP "Меню"{

MENUITEM "Создать ключ",IDM_CREATEKEY

MENUITEM SEPARATOR

MENUITEM "Удалить ключ",IDM_DELETEKEY

}

POPUP "Справка"{

MENUITEM "About",IDM_ABOUT

}

MENUITEM "EXIT",IDM_EXIT

}

 

Вигляд файлу ресурсів наведено на рис. 29.2.

 

В останній кнопці файлу ресурсів відсутня вспливаюча кнопка. По обробці цієї кнопки з надписом EXIT здійснюється закриття вікна й вихід з програми. Програма виконання прикладу 29.2 наведена в лістингу 29.3.

 

Лістинг 29.3:

; (вітка HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

; ключ:NoTrayContextMenu)

.686 ; директива визначення типу мікропроцесора

.model flat,stdcall ; завдання лінійної моделі пам’яті

; та угоди ОС Windows

option casemap:none ; відмінність малих та великих літер

include masm32includewindows.inc

include masm32includeuser32.inc

include masm32includekernel32.inc

include masm32includegdi32.inc

include masm32includeadvapi32.inc

includelib masm32libuser32.lib

includelib masm32libkernel32.lib

includelib masm32libgdi32.lib

includelib masm32libadvapi32.lib

; числові значення кнопок меню (1 – 4) та іконки (22)

IDM_CREATEKEY equ 1

IDM_DELETEKEY equ 2

IDM_ABOUT equ 3

IDM_EXIT equ 4

IDI_ICON equ 22

 

WinMain proto hlnst:HINSTANCE,CmdShow:DWORD

.data ; директива визначення даних

ClassName db "Firstclass",0

AppName db "Программа установки и снятия ключей в реестре",0

MenuName db "FirstMenu",0

Msg db "Рысованый А.Н. ",0ah,0dh,"rysov@rambler.ru", 0

params MSGBOXPARAMS <>

Titl db "Autor",0

szREGSZ db "REG_SZ",0 ; рядок з назвою ключа має 0 на кінці

szTestKey db "SoftwareMicrosoftWindowsCurrentVersionPolicies Explorer",0

setValue db "0",0 ; розмір ключа в байтах

ValSize1 db 4 ; розмір ключа в байтах

szValueName1 db "NoTrayContextMenu",0

;getValue1 db 7 DUP(?),0

.data?

hKey dd ?

lpdwDisp dd ?

hInstance HINSTANCE ?

.code ; директива початку сегмента даних

_st: ; мітка початку програми

invoke GetModuleHandle, NULL ; отримання дескриптора програми

mov hInstance,eax ; збереження дескриптора програми

invoke WinMain,hInstance,SW_SHOWDEFAULT

invoke ExitProcess,eax

 

WinMain proc hInst:HINSTANCE,CmdShow:DWORD

LOCAL wc:WNDCLASSEX ; резервування стека під структуру

LOCAL msg:MSG ; резервування стека під структуру MSG

LOCAL hwnd:HWND ; резервування стека під хендл програми

mov wc.cbSize,SIZEOF WNDCLASSEX ; кількість байтів структури

mov wc.style, CS_HREDRAW or CS_VREDRAW ; стиль та поведінка вікна

mov wc.lpfnWndProc, OFFSET WndProc ; адреса процедури WndProc

mov wc.cbClsExtra,0 ; кількість байтів для структури

mov wc.cbWndExtra,0 ; кількість байтів для структури

push hInstance ; збереження в стеці дескриптора програми

pop wc.hInstance ; повернення дескриптора в поле структури

mov wc.hbrBackground,COLOR_WINDOW+1 ; колір вікна

mov wc.lpszMenuName,OFFSET MenuName ; ім’я ресурсу меню

mov wc.lpszClassName,OFFSET ClassName ; ім’я класу