Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «НСдокумСнтированныС ΠΈ малоизвСстныС возмоТности Windows XPΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 59

Автор Π ΠΎΠΌΠ°Π½ КлимСнко

'ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части

'ΠΊΠΎΠ΄Π° свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок.

private sub sronoff()

 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΈΠΌΠ΅Π½Π½ΠΎ сСйчас ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ WMI с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ½ΠΈΠΊΠ΅Ρ€Π° winmgmts.

 'Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ пространству ΠΈΠΌΠ΅Π½ root/default локального

 'ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ объявляСм класс SystemRestore этого пространства c ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠ΅ΠΉ

 'ΠΏΡ€Π°Π² доступа (impersonate). Если Π²Π°ΠΌ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ доступ ΠΊ пространству

 'ΠΈΠΌΠ΅Π½ root/default, Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ смоТСтС ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ класс SystemRestore

 'ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ рассматривали ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ рССстра, для опрСдСлСния ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²

 'ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚ поставщиков WMI. ИмСнно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ ΠΈ

 'ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

 Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")

 'Π§ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ считываСм ΠΈΠ· рССстра Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ

 'сцСнария состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°,

 'Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ считываСм, Π½Π΅ сущСствуСт Π² рССстрС. Π§Ρ‚ΠΎΠ±Ρ‹ сцСнарий

 'Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ ошибкой, ΠΌΡ‹ подавляСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π°Ρ‡ΠΈ ошибок.

 'Π˜Π½Ρ‹ΠΌΠΈ словами, привСдСнная Π½ΠΈΠΆΠ΅ строка Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ сСрвСру сцСнариСв ΠΎ Ρ‚ΠΎΠΌ,

 'Ρ‡Ρ‚ΠΎ Π² случаС возникновСния ошибки ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ дальшС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сцСнарий,

 'Π½Π΅ обращая внимания Π½Π° Π²ΠΎΠ·Π½ΠΈΠΊΡˆΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

 ON ERROR RESUME NEXT

 'ИмСнно сСйчас ΠΌΡ‹ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с рССстром. ΠœΡ‹ считываСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

 'ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° 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: являСтся систСмным);

β–  cscript d:\sr.vbs c:\ Y β€” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния систСмы (Ссли диск C: являСтся систСмным);

β–  cscript d:\sr.vbs D:\ N β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ SystemRestore Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° дискС D:.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ восстановлСния

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ рассмотрСниС Ρ‚Π΅ΠΌΡ‹ восстановлСния систСмы ΠΈ опишСм ΠΊΠΎΠ΄ для автоматичСского создания Ρ‚ΠΎΡ‡ΠΊΠΈ восстановлСния. На этот Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π°Ρ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ WMI, Π° Π½Π΅ вСсь ΠΊΠΎΠ΄ сцСнария, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΎΠ½ΠΈΠΊΠ΅Ρ€Ρƒ winmgmts ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с классом. Π’Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ SystemRestore, Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния систСмы ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ созданиС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ восстановлСния.

Листинг 11.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ восстановлСния

Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/ default:SystemRestore")

'Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ создаСтся Ρ‚ΠΎΡ‡ΠΊΠ° восстановлСния.

'Ѐункция ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСт описаниС

'создаваСмой Ρ‚ΠΎΡ‡ΠΊΠΈ восстановлСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ошибки Π² случаС

'Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ создания. Нам этот ΠΊΠΎΠ΄ Π½Π΅ Π½ΡƒΠΆΠ΅Π½,

'Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

'Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ свСдСния ΠΎ создании Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΆΡƒΡ€Π½Π°Π»,

'Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

ErrorSRCode = obj.CreateRestorePoint("Π’ΠΎΡ‡ΠΊΠ° восстановлСния ΠΎΡ‚ " & Time(), 0, 100)

ЭнумСрация содСрТимого Π²Π΅Ρ‚Π²ΠΈ рССстра

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для доступа ΠΊ систСмному рССстру (WScript.CreateObject("Wscript.Shell") ), ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ· рССстра, Π±Ρ‹Π» рассмотрСн Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сцСнария для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ/ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ восстановлСния систСмы Π½Π° логичСских дисках ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с рССстром.

Но Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ большой нСдостаток β€” с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСльзя ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, располоТСнныС Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ рССстра. Π­Ρ‚ΠΎΡ‚ нСдостаток ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π» возмоТности примСнСния сцСнариСв сСрвСра сцСнариСв Windows, поэтому просто нСльзя Π½Π΅ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π½ΠΎΠ²ΠΎΠΌ свойствС инструмСнтария Windows, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выполняСт ΠΈΠΌΠ΅Π½Π½ΠΎ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.