Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
защита данных / Лабораторная работа №3.doc
Скачиваний:
46
Добавлен:
31.03.2015
Размер:
199.68 Кб
Скачать

Возможный вид главной формы программы-инсталлятора

Кнопка «Установить программу» разблокируется после ввода имени раздела реестра, хранящего электронную подпись под собранной при установке программы информацией, и ввода имени устанавливаемой программы.

Возможный вид дополнительной формы основной программы

Может быть создана с помощью глобальной функции InputBox библиотеки Visual Component Library систем Delphi и C++ Builder.

Рекомендуемые средства языка программирования c#

  1. Класс Environment (параметры операционной среды).

Статические свойства и методы:

string SystemDirectory; // путь к папке System32

string MachineName; // имя компьютера

string UserName; // имя текущего пользователя

string CurrentDirectory; // путь к текущей папке

string GetEnvironmentVariable (string variable); /* получение значения, специфицируемого variable (например, windir для получения пути к папке с ОС Windows) */

string[] GetLogicalDrives (); /* получение массива строк, каждая из которых содержит путь к корневой папке логического диска на компьютере*/

  1. Класс SystemInformation (получение информации об операционной системе).

Статические свойства:

int MouseButtons; // количество кнопок мыши.

Size PrimaryMonitorSize; /* высота (поле Size.Height)и ширина (поле Size.Width)монитора */

  1. Класс DriveInfo (информация о диске, пространство имен System.IO).

Конструктор с параметром string driveName (буква или путь к корневой папке диска) создает объект для указанного диска.

Свойства:

string DriveFormat; // возвращает имя файловой системы диска

string VolumeLabel; // возвращает метку дискового тома

long TotalSize; // возвращает общий размер диска в байтах

string Name; // возвращает имя диска (путь к корневой папке)

  1. Класс Win32_LogicalDisk (информация о диске).

Свойства:

string Name; // имя диска (буква и :)

string VolumeSerialNumber; // серийный номер диска

Класс ManagementObjectSearcher (пространство имен System.Management, требуется добавление к проекту ссылки на System.Management). Конструктор с параметром "Select * from Win32_LogicalDisk" создает запрос к системной базе данных, метод ManagementObjectCollection Get() выполняет указанный в конструкторе запрос и возвращает коллекцию с результатом выполнения. Доступ к свойству элемента коллекции с помощью строки с именем свойства, например mo["VolumeSerialNumber"], где mo – имя элемента коллекции.

  1. Класс Win32_PhysicalMemory (информация об оперативной памяти).

Свойство:

UInt64   Capacity; // объем физической памяти в байтах

Класс ManagementObjectSearcher (пространство имен System.Management, требуется добавление к проекту ссылки на System.Management). Конструктор с параметром "Select * from Win32_PhysicalMemory" создает запрос к системной базе данных, метод ManagementObjectCollection Get() выполняет указанный в конструкторе запрос и возвращает коллекцию с результатом выполнения. Доступ к свойству элемента коллекции с помощью строки с именем свойства, например mo["Capacity"], где mo – имя элемента коллекции.

  1. Внешняя импортируемая функция для получения информации о типе и подтипе клавиатуры:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType.I4)]

public static extern int GetKeyboardType(int nTypeFlag); /* получение типа (nTypeFlag=0) или подтипа (nTypeFlag=1) клавиатуры */

  1. Класс FolderBrowserDialog (отображение стандартного диалога Windows для выбора папки).

Свойства и метод:

string SelectedPath; // возвращает путь к выбранной пользователем папке

bool ShowNewFolderButton; /* управляет добавлением в диалог кнопки Создать папку */

string Description; // задает дополнительный текст в диалоговом окне.

DialogResult ShowDialog(); /* отображает диалог и возвращает DialogResult.OK или DialogResult.Cancel */

  1. Класс.Registry (пространство имен Microsoft.Win32, доступ к системному реестру).

Статическое свойство RegistryKey CurrentUser; /* раздел HKEY_CURRENT_USER */

  1. Класс RegistryKey (доступ к подразделу реестра).

Методы:

RegistryKey CreateSubKey (string subkey); // создание или открытие подраздела

RegistryKey OpenSubKey (string name); // открытие существующего подраздела.

void SetValue (string name, Object value); /* запись значения value параметра name */

Object GetValue (string name); // чтение значения параметра.

void Close (); // закрытие раздела реестра с сохранением изменений

  1. Статический метод класса File (пространство имен System.IO):

void Copy(string sourceFileName, string destFileName, bool overwrite); /* копирование файла sourceFileName в файл destFileName с возможностью перезаписи, задаваемой параметром overwrite */

  1. Классы RSACryptoServiceProvider (реализация асимметричного криптоалгоритма RSA), DSACryptoServiceProvider (реализация асимметричного криптоалгоритма Эль-Гамаля):

Конструктор с параметром-объектом класса CspParameters, имеющего поля

int KeyNumber; /* тип пары ключей, значение KeyNumber. Signature определяет пару ключей для вычисления и проверки ЭЦП */

string KeyContainerName; // имя контейнера ключей

Методы:

byte[] SignData(byte[] buffer, Object halg); /* получение ЭЦП для данных из буфера buffer с использованием функции хеширования halg, которая может задаваться строками “md5” или “sha1” (в классе DSACryptoServiceProvider этот метод имеет только один параметр, т.к. ЭЦП всегда вычисляется с помощью функции хеширования SHA1) */

bool VerifyData(byte[] buffer, Object halg, byte[] signature); /* проверка ЭЦП signature для данных из буфера buffer с использованием функции хеширования halg (в классе DSACryptoServiceProvider этот метод имеет только два параметра, т.к. ЭЦП всегда роверяется с помощью функции хеширования SHA1) */