ОС - Лабораторная работа №10
.pdfЛабораторная работа № 10
Special Folders Windows. Startup. Работа с файлами и папками.
Цель: По изученым методам и функциям языка VBScript, написать сценарий.
Учебный план:
1.Применение свойства Special Folders.
2.Автозагрузка в реестре.
3.Применение метода SendKeys.
4.Объектная модель FileSystemObject.
1.Применение свойства Special Folders
Свойство SpecialFolders позволяет просмотреть список “ специальных” папок (табл.1) операционной системы Windows, имеется в виду просмотр местоположения таких каталогов как рабочий стол, мои документы или папка автозагрузки.
Рассмотрим спциальную папку Автозагрузка. В английской версии Windows папка Автозагрузка носит имя Startup, и если вы укажете точный путь вроде
C:\Users\user1\AppData\Roaming\Microsoft\Windows\Главное меню\Программы\Автозагрузка,
то это сработает в русской версии Windows и нигде больше. Чтобы избежать этих проблем Microsoft создала список специалных папок. Чтобы получить доступ к какой-либо специальной папке можно воспользоваться свойством SpecialFolders объекта WshShell.
Для примера расмотрим сценарий на языке VBScript, для вывода специальных папок
Рис.1:
Создаем объект WshShell
Создаем объект WshSpecialFolders
Имя специальной папки Windows
Выводим путь на рабочий стол
Рис.1 Применение свойства SpecialFolders объекта WshShell.
Рис.2 Резуьтат работы сцеария. Путь для специальной папки Desktop.
Таблица 1
|
Специальные папки в Windows |
Имена папок |
Описания |
Desktop |
Путь к рабочему столу |
Favorites |
Избранное |
Fonts |
Путь к шрифтам |
My Documents |
Мои документы |
NetHood |
Сетевое окружение |
PrintHood |
Путь к принтерам |
Programs |
Подменю "Программы" кнопки "Пуск" |
Recents |
Подменю "Документы" кнопки "Пуск" |
SendTo |
подменю Отправить из контекстного меню файлов |
StartMenu |
Главное меню |
Startup |
Подменю "Автозагрузка" из подменю "Программы" |
Templates |
Шаблоны |
AllUsersDesktop |
Путь к рабочему столу для всех пользователей |
AllUsersStartMenu |
Путь к главному меню для всех пользователей |
AllUsersPrograms |
Подменю "Программы" кнопки "Пуск" для всех пользователей |
AllUsersStartUp |
Подменю "Автозагрузка" из подменю "Программы" |
Однако, список специальных папок можно получить и другим способом, этот список легко просмотреть через реестр, он хранится в двух местах
HCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
и
HKCU\Software\ Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Согласно документации msdn.microsoft.com мы получаем доступ лишь к папкам представленным в (табл.1).
2.Автозагрузка в реестре
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion. Найдите там подразделы Run, RunOnce, RunOnceEx, RunServices, RunServicesOnce. В этих разделах есть строковые ключи (некоторые разделы пустые), отвечающие за запуск программ. Название ключа может быть произвольным, а в качестве значения у них указывается запускаемая программа, если надо - то с параметрами. Обратите внимание на разделы, в названии которых присутствует "Once". Это разделы, в которых прописываются программы, запуск которых надо произвести всего один раз. Например, при установке новых программ некоторые из них прописывают туда ключи, указывающие на какие-нибудь настроечные модули, которые запускаются сразу после перезагрузки компьютера. Такие ключи после своего запуска автоматически удаляются. Подумайте, все ли они нужны вам при загрузке и лишнее просто удалите. Это позволит значительно ускорить загрузку Windows.
Но это не единственный раздел, откуда запускаются программы. Перейдем к другой ветви, а именно к HKEY_CURRENT_USER и откроем там раздел
SOFTWARE\Microsoft\Windows\CurrentVersion. Там есть только два подраздела, отвечающие за автозагрузку: Run и Runonce. Изначально они пустые, так что все записи там сделаны другими программами.
Следует помнить, что из реестра программы запускаются в первую очередь, затем из файла win.ini и самыми последними из "Автозагрузки". Так что если у вас стоит в автозагрузке антивирусный монитор, то это еще не факт, что он отловит запуск вирусной программы, т.к. вирусы имеют гораздо меньший по размеру файл и грузятся не в пример быстрее.
3.Применение метода SendKeys
Сценарий может запустить приложение и перевести его окно на передний план. Все нажатия клавиш пользователем передаются в это окно приложения. Для написания сценария используют метод SendKeys. Рассмотрим простой пример. Следующий VBScript запускает
Сalculator методом Run Рис.3:
Рис.3 Пример метода Run
Оператор Wscript.sleep 1000 переводит фокус в окно Calculator. Если не сделать эту паузу, сценарий может перейти к следующему оператору, посылающего нажатие клавиши, до того, как Calculator получит фокус; если это случится, все заданные нажатия пропадут.
Продолжим сценарий Рис.4. Когда окно активизируется, сценарий посылает выражение:
10 + 2 = в окно Calculator.
Метод SendKeys является частью объекта WshShell. Для представления «клавиши», передаваемой в этом параметре, нужен минимум один символ. Клавиша на клавиатуре может быть представленна одним символом. Так, чтобы имитировать нажатие клавиши A, в аргумент нужно передать символ A. Если в строке нескколько символов (скажем, ABC), приложению посылаются все эти символы.
Знак «плюс» (+) имеет особый смысл в команде SendKeys (табл.2), а передать его можно, заключив в фигурные скобки: {+}.
Таким образом, команды в окно Calculator пересылаются операторами:
Создаем объект WshShell
Запускаем Calculator
Приостанавливаем сценарий на 1 секунду
Задаем нажатия клавиш в Calculator
Рис. 4 Продолжение примера запуска Calculator, сложение выражения и удаление результата.
Каждый вызов передает параметр, содержащий строку. Калькулятор выражает и отображает число 12. Следующие команды приостанавливают сценарий и очищают результат на табло калькулятора.
Таблица 2
|
Кодировка специальных клавиш в методе SendKeys |
Клавиша |
Кодировка |
Backspace |
{BACKSPACE}, {BS} или {BKSP} |
Break |
{BREAK} |
Caps Lock |
{CAPSLOCK} |
Delete |
{DELETE} или {DEL} |
End |
{END} |
Enter |
{ENTER} |
Esc |
{ESC} |
Help |
{HELP} |
Home |
{HOME} |
Insert |
{INSERT} или {INS} |
Num Lock |
{NUMLOCK} |
Page Down |
{PGDN} |
Page Up |
{PGUP} |
Print Screen |
{PRTSC} |
Scroll Lock |
{SCROLLLOCK} |
Tab |
{TAB} |
Cursor up |
{UP} |
Cursor left |
{LEFT} |
Cursor down |
{DOWN} |
Cursor right |
{RIGHT} |
F1-F16 |
{F1}-{F16} |
Чтобы задать комбинации, включающие Shift, Ctrl или Alt, вы должны добавить специальный код перед кодом второй клавиши (табл.3)
Таблица 3
|
Коды для комбинаций клавиш в методе SendKeys |
Клавиша |
Кодировка |
Shift |
+ |
Ctrl |
^ |
Alt |
% |
|
|
Для того чтобы задать комбинацию клавиш, которую нужно набирать, удерживая нажатыми клавиши Shift, Ctrl или Alt, нужно заключить коды этих клавиш в скобки. Например, если требуется сымитировать нажатие клавиш G и S при нажатой клавише Shift, следует использовать последовательность "+(GS)". Для того же, чтобы задать одновременное нажатие клавиш Shift+G, а затем S (уже без Shift), используется "+GS".
В методе SendKeys можно задать несколько нажатий подряд одной и той же клавиши. Для этого необходимо в фигурных скобках указать код нужной клавиши, а через пробел — число нажатий. Например, {LEFT 42} означает нажатие клавиши 42 раза подряд; {h 10} означает нажатие клавиши h 10 раз подряд.
4.Объектная модель FileSystemObject
Работа с файлами.
Чтобы получить доступ к объектам и свойствам объектной модели FileSystemObject (далее FSO), надо создать переменную-объект и присвоить ей ссылку на объект FileSystemObject. Этот объект сам по себе является частью языка, поэтому ссылку на него позволяют получить встроенные методы VBScript. FSO предоставляет некоторые возможности для работы с текстовыми файлами. Можно создавать, удалять, копировать и перемещать файлы Рис.5.
Для создания текстового файла применяют метод CreateTextFile.
Для копирования, перемещения и удаления файлов объект FSO предоставляет несколько методов.
Рис.5 Некоторые возможности для работы с файлами и папками.
Задания для выполнения лабораторной работы
Создание простого вируса с применением Автозагрузки и изученых методов, функций
VBScript.