Недокументированные и малоизвестные возможности 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: является системным);
Поделиться:
Популярные книги
Штуцер и тесак
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
В погоне за женой, или Как укротить попаданку
Фантастика:
фэнтези
6.62
рейтинг книги
Неудержимый. Книга XXIX
29. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Барон не играет по правилам
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Имперский Курьер. Том 3
3. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Имперец. Том 1 и Том 2
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 12
12. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Лишняя дочь
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Он тебя не любит(?)
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Камень. Книга восьмая
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Маска зверя
5. Чужие интересы
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Камень. Книга вторая
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Законы Рода. Том 11
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00