Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты Системное прогр Сымбат.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
595.46 Кб
Скачать

Экзаменационный билет № 9

1. Возможные структуры программ для Windows.

2. Ресурсы. Диалоговое окно.

3. Идентификаторы безопасности.

Идентификаторы SID применяются в Win32 для опознания пользователей и

групп. Программа может искать SID по имени учетной записи, которая

соответствует пользователю, группе, домену и т.д. Учетная запись может

находиться в удаленной системе.

BOOL LookupAccountName ( LPCTSTR lpszSystem,

LPCTSTR lpszAccount, PSID psid, LPDWORD lpcbSid,

LPTSTR lpszReferencedDomain, LPDWORD

lpcchReferencedDomain, PSID_NAME_USE psnu)

Параметры

lpszSystem и lpszAccount указывают на имена системы и учетной записи.

Часто lpszSystem присваивается значение NULL, чтобы указать на локальную

систему.

psid — возвращаемая информация, которая имеет размер *lpcbSid. Если

буфер недостаточно велик, функция завершается с ошибкой, возвращая

требуемый размер.

lpszReferencedDomain — строка длиной *lpcchReferencedDomain

символов. Параметр длины должен быть инициализирован в размер буфера

(сбои обрабатываются обычным протоколом). Возвращаемое значение

определяет домен, в котором находится искомое имя. Имя учетной записи

"Administrators" возвращает "BUILTIN", тогда как имя учетной записи

пользователя возвращает то же самое имя пользователя.

Параметр psnu указывает на переменную SID_NAME_USE (перечислимого

типа) и может проверяться на такие значения, как SidTypeWellKnownGroup,

SidTypeUser, SidTypeGroup и т.д.

BOOL LookupAccountSid ( LPCTSTR lpszSystem, PSID psid,

LPTSTR lpszAccount, LPDWORD lpcchName,

LPTSTR lpszReferencedDomain,

LPDWORD lpcchReferencedDomain, PSID_NAME__USE psnu)

Функция LookupAccountSid позволяет проделать обратный процесс,

указав SID и получив имя учетной записи. Именем учетной записи может быть

любое доступное для процесса имя. Некоторые имена, такие как Everyone (Все),

хорошо известны. Имя учетной записи пользователя данного процесса (данного

сеанса) можно получить с помощью функции

BOOL GetUserName ( LPTSTR lpBuffer,

LPDWORD lpcchBuffer)

Имя пользователя и его длина возвращаются обычным способом. Создавать

SID и управлять ими можно с помощью таких функций, как InitializeSid и

AllocateAndInitializeSid. Но примеры ограничены лишь идентификаторами,

полученными по именам учетных записей.

Как только SID станут известны, они могут быть введены в

инициализированный дескриптор безопасности.

BOOL SetSecurityDescriptbrOwner (PSECURITY_DESCRIPTOR psd,

PSD psidOwner, BOOL fOwnerDefaulted)

BOOL SetSecurityDescriptorGroup ( PSECURITY__DESCRIPTOR psd

PSID psidGroup, BOOL fGroupDefaulted)

Здесь psd указывает на соответствующий описатель безопасности, а

psidOwner или psidGroup) — это адрес SID владельца (группы). Параметр

fOwnerDefaulted или (fGroupDefaulted) указывает, что нужно использовать

заданную по умолчанию информацию.

Функции GetSecurityDescriptbrOwner и

GetSecurityDescriptorGroup возвращают SID (владельца или группы)

указанного описателя безопасности.

Экзаменационный билет № 10

1. Схема преобразования логического адреса в линейный адрес в защищенном режиме адресации.

2. Ресурсы. Меню.

3. Реестр. Управление параметрами.

Реестр — это централизованная иерархическая база данных конфигурации

приложений и системы. Доступ к реестру осуществляется через разделы

реестра, которые аналогичны каталогам файловой системы. Раздел может

содержать другие разделы или пары "параметр-значение", которые можно

уподобить именам файлов и их содержимому.

Пользователь или администратор могут просматривать и редактировать

содержимое реестра с помощью редактора реестра, который вызывается

командой REGEDIT32. Кроме того, программы могут управлять реестром через

функции API, описанные в этом разделе.

Пары "параметр-значение" в реестре содержат, в частности, следующую

информацию:

• номер версии и номер выпуска операционной системы, а также имя

зарегистрированного пользователя;

• информацию подобного рода обо всех правильно установленных

приложениях;

• информацию о типе процессора компьютера, количестве процессоров,

системной памяти и т.д.;

• пользовательскую информацию, такую как основной каталог и настройки

приложений;

• данные безопасности, например имена учетных записей пользователей;

• установленные службы;

• соответствия между расширениями файлов и выполняемыми программами,

которые применяются оболочкой интерфейса пользователя, когда он

щелкает на значке файла; например, расширение .doc может

соответствовать Microsoft Word;

• соответствия между сетевыми адресами и именами компьютеров.

Вывести параметры указанного открытого раздела можно с помощью

функции RegEnumValue. Следует указать индекс параметра: при первом

вызове — нуль, при последующих — с увеличением на единицу. Функция

выдает строку с именем параметра и его длиной. Также возвращается значение

параметра и его тип.

LONG RegEnumValue ( HKEY hKey, DWORD dwIndex,

LPTSTR lpValueName, LPDWORD lpcbValueName,

LPDWORD lpReserved, LPDWORD lpType,

LPBYTE lpData, LPDWORD lpcbData)

Текущее значение параметра возвращается в буфере, на который указывает

lpData. Размер результата можно получить в lpcbData.

Тип данных, на который указывает lpType, может иметь множество

значений, включая REG_BINARY, REG_DWORD, REG_SZ (строку) и

REG_EXPAND_SZ (расширяемую строку с параметрами, заменяемыми

переменными окружения). Список всех типов можно получить во встроенной

справке.

Возвращаемое значение функции позволяет узнать, выведены ли все

параметры. Значение равно ERROR_SUCCESS, если найден правильный

параметр.

Функция RegQueryValueEx подобна приведенной выше за исключением

того, что в ней указывается имя параметра, а не индекс. Эту функцию можно

использовать, если известны имена параметров, в противном случае раздел

следует просматривать с помощью RegEnumValueEx.

Чтобы установить значение параметра в открытом разделе, применяется

функция RegSetValueEx. В ней указываются имя параметра, тип значения и

само значение.

LONG RegSetValueEx (HKEY hKey, LPCTSTR lpValueName,

DWORD Reserved, DWORD dwType, CONST BYTE *lpData,

CONST cbData)

Наконец, для удаления параметров служит функция RegDeleteValue.