Конфігурація апаратних засобів персонального
комп'ютера h2>
Курсовий проект з дисципліни «Архітектура ЕОМ» p>
2005 p>
Ведення h2>
Загальновідомо,
що системний блок сучасного комп'ютера складається з окремих модулів,
об'єднаних в одне ціле і виконують кожен свою, певну функцію. p>
На
сьогоднішній день з'явилася величезна кількість апаратних засобів персональних
комп'ютерів різних виробників, які виконують найрізноманітніші завдання:
введення інформації, виконання коду програм, виведення результатів роботи і т.д.
Часом стає важливою можливість визначення конфігурації при не маєтку на
руках документації на встановлене обладнання та без розбирання системного
блоку. У цьому випадку приходять на допомогу програми спеціально розроблені для
вирішення подібного роду завдань - програми визначення конфігурації комп'ютера. p>
Дана
робота присвячена розробці саме такої програми. Програми, яка була б
здатна відтворити внутрішній устрій комп'ютера до класифікації модулів і
інформацією по кожному з них. p>
1.
Теоретичні відомості p>
Операційні
системи Windows, починаючи Windows '95, мають умовну структуру звану
системним реєстром, в якій міститься вся інформація про обладнання
персонального комп'ютера і встановленому на ньому програмне забезпечення, а
також службова, необхідна для оптимального функціонування самої системи та
правильного виконання програмних компонентів. p>
Що
таке системний реєстр? p>
Системний
реєстр - база даних, яка зберігає параметри p>
налаштування
для 32 розрядних версій Microsoft Windows включає; Windows 95, 98 і NT. Він
містить інформацію і параметри настроювання для всіх апаратних засобів,
програм, користувачів, і властивостей PC. Кожного разу, коли користувач робить
зміни в параметрах налаштування панелі управління, або в асоціаціях файлів,
системної налаштуванні, або у встановленому програмному забезпеченні, зміни
відображаються і зберігаються в системному реєстрі. p>
Де
знаходиться системний реєстр? p>
Фізичні
файли, які складають системний реєстр, p>
розрізняються
залежно від версії Windows; в Windows 95 і 98 він міститься у двох прихованих
файлах каталогу Windows, званими USER.DAT і SYSTEM.DAT, у той час як у
Windows NT файли містяться p>
в каталозі "Windows/System32/Config". p>
Як
можна редагувати системний реєстр? p>
Редактор
системного реєстру (REGEDIT.EXE) включений до більшості версій Windows (хоча Ви
не знайдете його в меню "Пуск") він дає можливість переглядати,
шукати і редагувати дані в межах системного реєстру. Є декілька
методів для запуску редактора, найпростіший - натиснути на кнопку
"Пуск", потім вибрати Виконати, далі в поле "Відкрити:"
надрукувати "regedit" і відкриється редактор системного реєстру. p>
p>
Використання
Regedit для зміни системного реєстру p>
Як
тільки Regedit відкритий, Ви помітите, що ліву сторону займає дерево з
папками, а праву зміст вибраної папки. p>
Щоб
розгорнути деяку гілку, натисніть на знак "плюс" [+] ліворуч від будь-якої
папки, або двічі клацніть на папці. Щоб відобразити вміст папки, натисніть
на потрібний ключ, і Ви побачите, перераховані на правій стороні. Ви
можете додати новий ключ або параметр, вибираючи пункт «Створити», з меню
«Правка», або клацаючи правою кнопкою миші. Також Ви можете повернути будь-який
параметр і майже будь-який ключ тим же методом, що і перейменовувати файли;
клацніть правою кнопкою миші на об'єкті, і виберете «Перейменувати», або
натисніть на ньому двічі (повільно), або натисніть F2 на клавіатурі. Нарешті, Ви
можете видалити ключ або параметр, вибираючи його, і, натискаючи «Delete» на
клавіатурі, або клацаючи правою кнопкою миші на параметр, і вибираючи «Видалити».
Зверніть увагу: Завжди Резервуйте Ваш системний реєстр перед створенням
будь-яких змін у ньому. Це дасть Вам можливість не встановлювати заново
операційну систему в разі неправильних дій. Набагато краще
перестрахуватися, ніж потім шкодувати! p>
Системний
реєстр має ієрархічну структуру, яка подібна структурі каталогів на
Вашому жорсткому диску, а Regedit подібний Провіднику Windows. Кожна головна гілка
(позначена позначкою папки в редакторі реєстру, див. нижче)
називається Кореневий і містить ключі. Кожен ключ може містити інші ключі
(іноді звані підключений), а також параметри. Параметри містять
фактичну інформацію, збережену в системному реєстрі. Є три типи
параметрів; рядкові, Двійкові, і DWORD. Реєстр має шість головних гілок,
кожна з яких містить певну частину інформації. Це наступні гілки: p>
·
HKEY_CLASSES_ROOT: Ця гілка містить всі типи Ваших асоціацій до файлів,
інформацію про OLE і дані з ярликами. p>
·
HKEY_CURRENT_USER: Ця гілка пов'язана з гілкою HKEY_USERS, і відповідає
користувачеві, який працює в даний час на PC. p>
·
HKEY_LOCAL_MACHINE: Ця гілка містить певну інформацію про типи апаратних
засобів, програмного забезпечення, і інших налаштуваннях на даному PC, ця
інформація використовується для всіх користувачів, які працюють на цьому
комп'ютері. p>
·
HKEY_USERS: Ця гілка містить індивідуальні налаштування кожного користувача
комп'ютера, кожен користувач представлений під ключем SID, розташованому під
головною гілкою. p>
·
HKEY_CURRENT_CONFIG: Ця гілка пов'язана з гілкою HKEY_LOCAL_MACHINE, і
відповідає поточній конфігурації. p>
·
HKEY_DYN_DATA: Ця гілка пов'язана з частиною HKEY_LOCAL_MACHINE, і служить для
використання особливостей Plug-&-Play у Windows, цей розділ динамічно
зміняться, коли пристрою додаються і видаляються з системи. p>
Імпорт
Експорт і параметрів настроювання системного реєстру p>
Корисною
особливістю редактора системного реєстру є здатність імпортувати і
експортувати параметри системного реєстру в текстовий файл, цей текстовий
файл має розширення. REG, може бути збережений а потім використаний іншими
людьми для більш простої зміни локальних параметрів системного реєстру. Ви
можете переглянути зміст цих текстових файлів, експортуючи ключ в
випробувальний файл і відкривши його у Блокноті. У редакторі реєстру
виберете ключ, потім з меню "Реєстр" виберіть "Експорт файл
реєстру ... ", Вкажіть ім'я файлу,. Якщо ви відкриєте цей файл
в Блокноті, то побачите текст, подібний до наведеного нижче: p>
REGEDIT4 p>
[HKEY_LOCAL_MACHINESYSTEMSetup] p>
"SetupType" = dword: 00000000 p>
"CmdLine" = "setup
-newsetup " p>
"SystemPrefix" = hex: c5, 0b, 00,00,00,40,36,02 p>
Зміст
його досить просте, REGEDIT4 вказує тип файлу,
[HKEY_LOCAL_MACHINESYSTEMSetup] вказує ключ, де знаходяться параметри,
"SetupType" = dword: 00000000 це параметр, частина запису вказана
безпосередньо після "=" визначається в залежності від типу даних;
Рядковий, Двійкове, або DWORD. P>
відредагувавши
це фото, Ви можете легко провести зміни в системному реєстрі, для цього
двічі клацніть на ньому, або виберете "Імпорт файлу реєстру,,," з
меню "Реєстр", і параметри будуть додані до реєстру. p>
Вся
інформація про встановлені компонентах та додатках заноситься до реєстру при
установки операційної системи і оновлюється при кожному запуску комп'ютера, а
тому є одним із джерел отримання даних про конфігурацію. Аналіз цих
даних було взято за основу рішення поставленого завдання. p>
2.
Вибір мови програмування p>
Оскільки
робота з реєстром на увазі виконання завдання під керуванням операційної
системи Windows, то це обставина вплинула на вибір мови програмування.
Необхідно було також звернути увагу на зручність створення інтерфейсу і
відображення всієї інформації в стандартному вікні Windows. p>
Всі
поставлені завдання повною мірою вирішувалися в середовищі Visual Basic. Вона і була
обрана в якості засобу створення даної програми. p>
3.
Опис алгоритму роботи програми p>
3.1.
Збір відомостей p>
. Inf
- Файли. P>
В
папці Windows/INF зібрані файли, в яких знаходиться інформація про
встановлюється обладнанні при інсталяції або завантаженні операційної системи.
І серед іншої службової інформації є відомості про клас того чи іншого
пристрою, що описується конкретним файлом. Всі файли цієї папки ми
переглядаємо (. inf-файли, в яких відсутні такі відомості нами не
розглядаються, а в програмі пропускаються) і створюємо список класів всіх
можливо встановлених пристроїв. p>
3.2.
Порівняння з інформацією системного реєстру p>
Після
того, як отримано список, кожен знайдений клас перевіряємо на його присутність в
системному реєстрі і, якщо він виявлений, то включаємо лічильник можливо встановлених
пристроїв даного класу. При кожному перерахунку лічильника робимо звернення до
реєстром на ознаку присутності устрою і, якщо відповідь позитивна,
зберігаємо інформацію. Якщо ж пристроїв даного класу в реєстрі не виявлено,
то переходимо до наступного елементу списку до тих пір, поки не вичерпаємо його
весь. p>
Після
відпрацювання даної частини алгоритму маємо розподілений по групах список всіх
встановлених пристроїв та інформацію по кожному з них. p>
Весь
процес збору інформації супроводжується виведенням на екран вікна «Збір відомостей»
(рис.1), в якому динамічно відображаються результати пошуку та ідентифікації. p>
p>
3.3.
Відображення отриманої інформації. p>
Інтерфейс
користувача p>
При
розробці інтерфейсу основна увага приділялася простоті використання і
наочності. Всі можливі типи пристроїв, що встановлюються в сучасних
комп'ютерах, поділилися на групи. У результаті вийшло 6 найменувань: p>
Процесор; p>
Системна
плата; p>
Пам'ять; p>
Диски; p>
Адаптери
і др.устройства; p>
Пристрої
введення/виводу. p>
Далі
слід було створення форми в середовищі Visual Basic, на якій були p>
розміщені
6 кнопок (по одній на кожну з виділених груп), вікно перегляду інформації по
вибраної групи з лініями прокрутки і лінійка швидкої допомоги. p>
Зовнішній
вигляд форми наведено на малюнку 2. p>
p>
Відображення
інформації. p>
За
натискання однієї з кнопок вступає в роботу відповідна процедура обробки,
яка проводить підготовку і висновок потрібної інформації. В результаті у вікні
праворуч з'являється інформація, що стосується групи. p>
Лінійка
швидкої допомоги p>
При
наведенні курсору миші на кожну з кнопок у лінійці швидкої допомоги з'являється
інформація її функції. p>
4.
Текст програми p>
Нижче
наводиться текст розробленої програми: p>
Код
форми HV1 (HV1.frm): p>
Private Sub Form_Load () p>
Progress.Show p>
Call SB_Sveden p>
Progress.Hide p>
End Sub p>
Private Sub Form_Unload (Cancel As
Integer) p>
End p>
End Sub p>
Private Sub Command1_Click () p>
SubK $ =
"HardwareDescriptionSystemCentralProcessor: "&" " P>
Next i p>
For i = 1 To n p>
Call GetDiskFreeSpace (Drives (i),
SecsPerClus (i), BytesPerSec (i), NumOfFreeClus (i), TotalNumOfClus (i)) p>
Select Case GetDriveType (Drives (i)) p>
Case DRIVE_CDROM p>
TypeOfDrive (i) = "CD-ROM" p>
Case DRIVE_REMOVABLE p>
TypeOfDrive (i) = "Floppy
disk " p>
Case DRIVE_FIXED p>
TypeOfDrive (i) = "Hard disk
drive " p>
Case DRIVE_RAMDISK p>
TypeOfDrive (i) = "Virtual
disk " p>
Case DRIVE_REMOTE p>
TypeOfDrive (i) = "Net
disk " p>
Case Else p>
End Select p>
Next p>
For i = 1 To n p>
VNBuffer (i) = Space $ (255) p>
VNSize (i) = 255 p>
vSysBuff (i) = Space $ (255) p>
vSysSize (i) = 255 p>
vFlags (i) = 0 p>
vCompLen (i) = 255 p>
vSerialNum (i) = 255 p>
lRet =
GetVolumeInformation (Drives (i), VNBuffer (i), VNSize (i), vSerialNum (i),
vCompLen (i), vFlags (i), vSysBuff (i), vSysSize (i)) p>
If lRet = 1 Then VNBuffer (i) =
Left $ (VNBuffer (i), Len (RTrim $ (VNBuffer (i))) - 1): vSysBuff (i) =
Left $ (vSysBuff (i), Len (RTrim $ (vSysBuff (i))) - 1): vSerialNum (i) =
Left $ (vSerialNum (i), Len (RTrim $ (vSerialNum (i))) - 1) p>
If lRet = False Then VNBuffer (i) =
"None": vSysBuff (i) = "None" p>
Next p>
End Sub p>
Код класу clsMemorySnapshot (Memory.cls) p>
Option Explicit p>
Private Type MEMORYSTATUS p>
dwLength As Long p>
dwMemoryLoad As Long p>
dwTotalPhys As Long p>
dwAvailPhys As Long p>
dwTotalPageFile As Long p>
dwAvailPageFile As Long p>
dwTotalVirtual As Double p>
dwAvailVirtual As Double p>
End Type p>
Private Declare Sub
GlobalMemoryStatus Lib "kernel32" _ p>
(lpBuffer As MEMORYSTATUS) p>
Private mmemMemoryStatus As
MEMORYSTATUS p>
Public Property Get FreeMemory () As
Long p>
FreeMemory =
mmemMemoryStatus.dwAvailPhys p>
End Property p>
Public Property Get TotalMemory () As
Long p>
TotalMemory =
mmemMemoryStatus.dwTotalPhys p>
End Property p>
Public Property Get
TotalVirtualMemory () As Double p>
TotalVirtualMemory =
mmemMemoryStatus.dwTotalVirtual p>
End Property p>
Public Property Get
AvailableVirtualMemory () As Double p>
AvailableVirtualMemory =
mmemMemoryStatus.dwAvailVirtual p>
End Property p>
Private Sub Class_Initialize () p>
mmemMemoryStatus.dwLength =
Len (mmemMemoryStatus) p>
GlobalMemoryStatus mmemMemoryStatus p>
End Sub p>
Public Sub Refresh () p>
GlobalMemoryStatus
mmemMemoryStatus p>
End
Sub p>
Висновок p>
Програма
повністю виконала всі поставлені перед нею завдання при тестуванні, що дозволяє
зробити висновок про її придатності для визначення конфігурації комп'ютера і
використання як доповнення до вже наявних у складі операційної
системи Windows, засобам отримання інформації про апаратні засоби з
більш простим і зручним інтерфейсом. p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://5ka.ru/
p>