Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по СПО4

.doc
Скачиваний:
47
Добавлен:
02.05.2014
Размер:
88.58 Кб
Скачать
Лабораторная работа 1
Работа с переменными окружения ОС Windows в прикладных программах
Работа рассчитана на 2 часа (1 занятие)

Цель работы: научиться читать переменные окружения ОС Windows c помощью функций Win32® API

Задание: написать программу, в которой выводится список всех переменных окружения ОС:

переменная = значение

подобно тому, как это делает программа из сервиса Windows(Рис 1 – справа)

Рис 1

Основные сведения о переменных окружения

Для поиска программ, выделения пространства памяти определенным программам и контроля программ операционная система Windows требует определенной информации, называемой переменными окружения системы (системные переменные) и пользователя (локальные переменные).

Системные переменные среды заданы заранее в операционной системе и доступны для всех процессов операционной системы Windows. Изменять и добавлять эти переменные могут только пользователи с административными учетными данными (права администратора). Эти переменные наиболее часто используются в сценариях входа в систему.

Локальные переменные среды доступны, только когда пользователь, для которого они были созданы, вошел в систему. Локальные переменные действительны только для текущего пользователя, но определяют поведение глобальной среды операционной системы.

В следующей таблице (Таблица 1.1) приведен список наиболее часто используемых системных и локальных переменных среды для операционной системы Windows.

Таблица 1.1

Переменная

Тип

Описание

%ALLUSERSPROFILE%

Локальная

Возвращает размещение профиля приложений используемое всеми пользователями

%APPDATA%

Локальная

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

%COMPUTERNAME%

Системная

Возвращает имя компьютера

%COMSPEC%

Системная

Возвращает путь к исполняемой командной оболочке cmd.exe

%HOMEDRIVE%

Системная

Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы»

%HOMEPATH%

Системная

Возвращает полный путь к основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы»

%HOMESHARE%

Системная

Возвращает сетевой путь к общему основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы»

%LOGONSERVER%

Локальная

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

%NUMBER_OF_PROCESSORS%

Системная

Задает количество процессоров, установленных на компьютере

%OS%

Системная

Возвращает имя операционной системы. Windows 2000 отображает операционную систему как Windows NT

%PATH%

Системная

Указывает путь поиска для исполняемых файлов

%PATHEXT%

Системная

Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые

%PROCESSOR_ARCHITECTURE%

Системная

Возвращает архитектуру процессора. Возможные значения: x86 и IA64 (Itanium)

%PROCESSOR_IDENTFIER%

Системная

Возвращает описание процессора

%PROCESSOR_LEVEL%

Системная

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

%PROCESSOR_REVISION%

Системная

Возвращает номер модификации процессора

%SYSTEMDRIVE%

Системная

Возвращает имя диска, содержащего корневой каталог операционной системы Windows (т.е. системный корневой каталог)

%SYSTEMROOT%

Системная

Возвращает размещение корневого каталога операционной системы Windows

%TEMP% и %TMP%

Системная и пользова-тельская

Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP

%USERDOMAIN%

Локальная

Возвращает имя домена, содержащего список учетных записей пользователей

%USERNAME%

Локальная

Возвращает имя пользователя, выполнившего вход в систему

%USERPROFILE%

Локальная

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

%WINDIR%

Локальная

Возвращает размещение каталога операционной системы

Эти переменные используются операционной системой WINDOWS и программными процессами функционирующими в системе WINDOWS. Например, хранение временных файлов в момент установки программ (Переменная TEMP или TMP).

Интерпретатор среды WINDOWS, например консоль cmd.exe, проводник WINDOWS, встретив имя переменной %ИМЯ_ПЕРЕМЕННОЙ%, заменяет его значением этой переменной. Таким образом, различные программы и сама операционная система использует одни и те же пути для хранения файлов конфигурации и другую полезную информацию необходимую для организации общих правил поведения программ и хранения группированной (конкретное место хранения общей) конфигурационной информации.

Значение переменной может включать в себя имена ранее объявленных переменных окружения, например %USERPROFILE%\Local Settings\Temp.

Еще одно полезное свойство переменных среды окружения в том, что при запуске приложений на выполнение, например при помощи файлов сценария *.bat; *.cmd и других, можно не указывать весь путь к файлу. Это достигается использованием переменной %PATH%. Значение этой переменной хранит пути, разделенные друг от друга точкой с запятой, по которым происходит поиск программы, которую необходимо запустить на выполнение. Еще одна переменная %PATHEXT% указывает расширения файлов, тех, которые будут запускаться на выполнение. Значения этих переменных хранятся в формате <.><ИМЯ_РАСШИРЕНИЯ> (например .сom), разделенные друг от друга точкой с запятой. Таким образом, операционная система WINDOWS производит поиск по путям %PATHT% только файлов с расширениями %PATHEXT%. Если расширение не было указано, производится поиск по имени с добавлением расширений из переменной %PATHEXT%. На выполнение запускается первый найденный файл, это надо учитывать, если существуют схожие имена файлов расположенные по путям %PATHT%.

Системный реестр и переменные окружения WINDOWS

Системные переменные окружения операционной системы Windows хранятся в системном реестре по пути:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\

Session Manager\Environment

Локальные переменные окружения операционной системы Windows хранятся в системном реестре по пути (для каждого пользователя свои):

HKEY_CURRENT_USER\Environment

Чтение и изменение переменных окружения при

помощи функций Win32® API

Полный список переменных окружения текущего процесса можно прочитать с помощью функции GetEnvironmentStrings, объявленный в файле Windows.h следующим образом:

LPSTR GetEnvironmentStrings (VOID);

Функция возвращает адрес блока строк вида:

имя_переменной = значение

Эти строки можно только прочитать. Изменять значения переменных с помощью этих строк невозможно.

После того как информация из блока переменных окружения извлечена, блок надо удалить функцией FreeEnvironmentStrings:

BOOL FreeEnvironmentStrings (IN LPSTR);

В качестве аргумента LPSTR в нее надо передать адрес, который ранее вернула функция GetEnvironmentStrings.

Получить информацию о значении какой-то конкретной переменной окружения можно функцией GetEnvironmentVariable, которая в файле Winbase.h объявлена следующим образом:

DWORD GetEnvironmentVariable (IN LPCSTR lpName,

OUT LPSTR lpBufer,

OUT DWORD nSize);

Здесь lpName – указатель на строку с именем переменной, а lpBuffer и nSize – буфер и его размер.

Задать значение переменной окружения или создать новую переменную можно функцией SetEnvironmentVariable, объявленной в файле Winbase.h:

BOOL SetEnvironmentVariable

(IN LPCSTR lpName, IN LPCSTR lpValue);

Параметр lpName – это имя переменной, параметр lpValue – задаваемое значение. Если параметр lpValue равен NULL, то переменная lpName удаляется из списка переменных окружения данного процесса. Если переменной с именем lpName нет, и lpValue не равняется NULL, то создается переменная с заданным именем и значением.

Надо учитывать, что функция SetEnvironmentVariable задает значение переменной только для данного процесса. Например, можно изменить значение переменной PATH, включив в него пути, требуемые для конкретного приложения. Но другие приложения будут при этом работать со своими значениями переменных.

6