Недокументированные и малоизвестные возможности Windows XP
Шрифт:
'параметра DisableSR. Если значение данного параметра равно 1,
'то SystemRestore полностью отключен на всех дисках и наш
'сценарий в любом случае не будет работать со всеми дисками,
'кроме системного.
dasableSR = objREG.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore\DisableSR")
'Если параметр, значение которого мы считываем, не существует в
'реестре, тогда
компилятор запишет в специальный объект err
'код ошибки, равный –2147024894 (именно ошибка с этим кодом и возникает
'в том случае, если параметр реестра, к которому мы пытаемся
'получить доступ, в реестре отсутствует) .Если действительно произошла
'ошибка с данным кодом, то SystemRestore на компьютере отключена,
'то есть все попытки включения/отключения дисков, отличных от системного
'(ниже под С:\ понимается системный диск), будут неудачны.
'Ниже в сценарии будет присутствовать еще одно условие, выполняющее те же
'действия, что и это. Работа с объектом для хранения ошибок была описана
'лишь для примера, таккак в сценариях сервера сценариев Windows это
'единственный способ определить, присутствует ли в реестре конкретный
'параметр.
if (err.Number = –2147024894) and (Drive <> "c:\") then
objTextFile.WriteLine " : Параметр DisableSR отсутствует в реестре. Это значит, что SystemRestore отключена и вкладка для ее настройки отсутствует в диалоге Свойства системы"
'Выходим из функции, а поскольку эта функция главная, то завершается
'и работа сценария. Иными словами, дальнейший код сценария
'выполняться не будет, если мы пытаемся включить/отключить несистемный
'диск, если сама возможность SystemRestore отключена.
exit sub
End if
'Под диском C:\ понимается системный диск, поэтому если вашим системным
'диском является не диск С:\, то букву нужно заменить. Особенность
'работы SystemRestore заключается в том, что в случае остановки
'SystemRestore на системном диске SystemRestore автоматически
'останавливается на всех дисках компьютера и параметр DisableSR становится
'равен 1. Именно поэтому запросы на включение/выключение System Restore
'на отличных от системного диска дисках не обрабатываются при значении
'параметра DisableSR, равном 1 (эти запросы работать не будут). При
'этом системный диск запросы обрабатывать может – если SystemRestore на
'нем будет включена, то параметр DisableSR
станет равным 0, а значит,
'будет включена и сама возможность автоматического восстановления.
'Именно поэтому ниже системный диск исключается из условного выполнения.
if (dasableSR > 0) and (Drive <> "c:\") then
objTextFile.WriteLine " : Возможность работы SystemRestore на всех дисках была отключена"
exit sub
else
'Для облегчения читаемости приведенного кода вместо условных конструкций
'if … else используются конструкции select case. В остальном дальше
'код довольно простой, поэтому описывать его мы не будем.
select case StopSR
case "N"
If (obj.Disable(Drive)) = 0 Then
objTextFile.WriteLine " : SystemRestore для диска " & Drive & " успешно остановлена"
Else
objTextFile.WriteLine " : Внимание!!! SystemRestore для диска " & Drive & " остановить не удалось"
End If
case "Y"
If (obj.Enable(Drive)) = 0 Then
objTextFile.WriteLine " : SystemRestore для диска " & Drive & " успешно запущена"
Else
objTextFile.WriteLine " : Внимание!!! SystemRestore для диска " & Drive & " запустить не удалось"
End If
End Select
End if
'Считается хорошим тоном закрывать в сценариях текстовые файлы, открытые
'до этого. Именно этим и занимается приведенная ниже строка.
objTextFile.Close
end sub
Вот, в принципе, и все. Приведенный в листинге сценарий очень подробно изложен, поэтому больше он описан не будет. Для запуска данного сценария необходимо иметь права администратора на локальном компьютере, иначе вы не сможете получить доступ к WMI. Если немножко изменить этот сценарий, то можно будет подключиться не к локальному компьютеру, а к любому другому компьютеру сети. Для этого нужно строку
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/ default:SystemRestore")
заменить строкой
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\«имякомпьютера»\root\default:SystemRestore")
При этом вместо имени компьютера можно использовать точку. В этом случае вы опять будете подключаться к локальному компьютеру.
Напоследок несколько возможных команд запуска приведенного сценария:
■ cscript d: \sr.vbs — полностью отключить возможность восстановления системы (если диск C: является системным);
Поделиться:
Популярные книги
Кодекс Охотника. Книга IV
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
An ordinary sex life
Любовные романы:
современные любовные романы
love action
5.00
рейтинг книги
Чужая дочь
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Защитник
11. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Неестественный отбор.Трилогия
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Метаморфозы Катрин
Фантастика:
фэнтези
8.26
рейтинг книги
Сирота
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Хозяйка Междуречья
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана 4
4. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ротмистр Гордеев 2
2. Ротмистр Гордеев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Неожиданный наследник
1. Царь Иоанн Кровавый
Приключения:
исторические приключения
5.00
рейтинг книги
Курсант: назад в СССР 2
2. Курсант
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Сердце Дракона. Двадцатый том. Часть 2
Сердце дракона
Фантастика:
фэнтези
5.00
рейтинг книги
Треск штанов
6. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00