Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы Word.docx
Скачиваний:
26
Добавлен:
16.03.2016
Размер:
352.09 Кб
Скачать

Конфігураційні файли win.Ini і system.Ini

Набудувати автозапуск програм можна і в системних файлах Windows - system.ini і win.ini. Ці файли використовуються (переважно, використовувалися) в Windows 3.x, 9x, Me для зберігання системних настройок. У Windows NT, 2000, XP аналогічні настройки перенесені в системний реєстр, але старі конфігураційні файли збережені в цілях забезпечення сумісності із старими ж програмами.

Конфігураційні файли win.ini і system.ini розбиті на секції. Назва кожної секції укладена в квадратні дужки, наприклад, [boot] або [windows].

У файлі win.ini рядка запуску програм виглядають так:

  • Load=<строка запуска>

  • Run=>строка запуска>

Аналізуючи такі рядки можна зрозуміти, які файли запускаються при старті комп'ютера.

У файлі system.ini є рівно один рядок, через яку найчастіше запускаються віруси, розташована в секції [boot]:

  • shell=<имя програмної оболонки Windows>

У всіх версіях Windows стандартною програмною оболонкою є explorer.exe. Якщо в рядку shell= вказане щось відмінне від explorer.exe, це з великою вірогідністю шкідлива програма. Справедливості ради, потрібно відзначити, що існують легальні програми, що є альтернативними програмними оболонками Windows. Такі програми можуть змінювати значення параметра shell у файлі system.ini.

Для створення програми можна використати класи TRegistry й TiniFile.

Частина коду, написаного на Delphi, яка вносить корективи до файлів Системного реєстру

procedure TForm1.Button2Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

Edit1.Text:=OpenDialog1.FileName;

ini:=TIniFile.Create(OpenDialog1.FileName);

ComboBox1.Clear;

ini.ReadSections(ComboBox1.Items);

ComboBox1.ItemIndex:=0;

ComboBox1Change(Self);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var reg: TRegistry; key: TStrings; value: string;

i, j: integer;

begin

try

if Edit2.Text = '' then raise

Exception.Create('Вы забыли ввести название ключа реестра!');

try

reg:=TRegistry.Create;

reg.RootKey:=HKEY_CURRENT_USER;

for i:=0 to ComboBox1.Items.Count-1 do

begin

if reg.OpenKey('\'+Edit2.Text+'\'+ComboBox1.Items[i], true) then

begin

key:=TStringList.Create;

ini.ReadSection(ComboBox1.Items[i], key);

for j:=0 to key.Count-1 do

begin

value:=ini.ReadString(ComboBox1.Items[i], key[j], '');

reg.WriteString(key[j], value);

end;

key.Free;

end;

end;

ShowMessage('Данные были успешно внесены в реестр.');

finally reg.Free; end;

except raise; end;

end;

Питання для самоконтролю:

  1. Для чого призначений Системний реєстр?

  2. Які існують гілки в реєстрі, за що відповідає кожна з них?

  3. У яких файлах зберігається Системний реєстр?

  4. Що таке ключ реєстру?

  5. У яких файлах містяться відомості про автозавантаження?

  6. Дії, що проводяться з реєстром?

Лабораторная работа №3

Разработка стандартных оконных приложений с простейшими элементами управления под Windows

Основы программирования в операционной системе Windows

  1. Программирование в Windows основывается на использовании функций API (Application Program Interface, интерфейс программного приложения). Их количество достигает двух тысяч. Ваша программ в значительной степени будет состоять из таких вызовов. Все взаимодействие с внешними устройствами и ресурсами операционной системы будет происходит посредством таких функций.

  2. Список функций API и их описание лучше всего брать из файла WIN32.HLP, который поставляется, например с пакетом Borland C++.

  3. Главным элементом программы в среде Windows является окно. Для каждого окна определяется своя процедура обработки сообщения.

  4. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна.

  5. Операционная система Windows использует линейную адресации памяти. Другими словами, всю память можно рассматривать как один сегмент. Для программиста на языке ассемблера это означает, что адрес любой ячейки памяти будет определяться содержимым одного 32-битного регистра, например ЕВХ.

  6. Следствием пункта 5 является то, что мы фактически не ограничены в объеме данных, кода или стека (объеме локальных переменных). Сегменты в тексте программы играют теперь другую роль. Они позволяют задать отдельным фрагментам кода (секциям) определенные свойства: запрет на запись, общий доступ и т.д.

  7. ОС Windows является многозадачной средой. Каждая задача имеет свое адресное пространство и свою очередь сообщений. Более того, даже в рамках одной программы может быть осуществлена многозадачность – любая процедура может быть запущена как самостоятельная задача.