Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3923 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Приведенный мной код отрабатывает, иначе бы не выкладывал. Разница в том, что он создает точку от имени "установки", а если поставить "7" - то от имени системы. Это плюс. давно искал, но найти не мог. Будет типа так?

Код:
Set objWMIService = GetObject("winmgmts: {impersonationLevel=impersonate}!\\.\\root\default")
Set objItem = objWMIService.Get("SystemRestore")
If (objItem.CreateRestorePoint("Системная контрольная точка", 7, 100)) = 0 Then
    WScript.Quit(WScript.Echo("CREATED"))
Else
    WScript.Quit(WScript.Echo("NONCREATED"))
End If
пишет ошибку:
Код:
 point.vbs(1, 1) (null): 0x80041021

Кстати, если просто поменять 0 на 7 меняется только тип создания точки. Если Зашита системы отключена, все равно вываливается ошибка, о которой писал выше.

----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 17:43 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft
ах, да! прости, не сразу въехал в суть, просто код твой покороче. ошибка
Цитата:
 point.vbs(1, 1) (null): 0x80041021
означает, что начальный объект у табе пустой. тогда так:
Код:
Set objWMIService = GetObject("winmgmts: \\.\root\default:SystemRestore")
errResult = objWMIService.CreateRestorePoint("Системная контрольная точка", 7, 100)
а теперь о защите. какого она рода и что ты имел в виду?

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 18:18 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
ну если в винде отключить "защиту системы", т.е. создание точек восстановления системы, то при попытке создать точку скриптом будет ошибка:

Код:
point.vbs(2, 1) SWbemObjectEx: Указанная служба не может быть запущена,
 поскольку она отключена или все связанные с ней устройства отключены.

если конечно, не ставить On Error Resume Next. Проблема не в том, чтобы ее подавить, а в том, чтобы когда она возникнет, сообщить пользователю через
Код:
WScript.Echo "У вас отключена защита системы. Для создания точки восстановления сначала включите эту функцию"


----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 18:42 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft
уфф, а я гадаю, чего за система защиты... ну, если отключить возможность создания точек восстановления, то разумнее тогда создать проверку на то, отключена ли такая возможность или все же нет. вот только через создание новой точки это как-то даже... сейчас попробую чего-нибудь соорудить.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 18:57 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
ну мне все равно, каким образом. Через создание точки, это, конечно не айс. Но по-другому я не знаю...

----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 18:58 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft
сказать по правде, чет невъезжаю я сегодня ни во что толком. в общем так. по всей видимости валидатора как такового не предусмотрено, однако это не значит, что я не могу ошибаться. все, что мне удалось экстрагировать, как отключть и подключить возможность создания контрольных точек:
Код:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default")
Set objItem = objWMIService.Get("SystemRestore")
'отключает службу
errResult = objItem.Disable("")
'подключает
errResult = objItem.Enable("")
 
Set objItem = Nothing
Set objWMIService = Nothing
похоже, что танцевать следует именно от этих двух параметров. пока не соображу как именно.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 20:05 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
ну и фиг с ним )) objItem.Enable("") уже достаточно.
так грамотно вписать?

Код:
Set ObjSysRr = GetObject("winmgmts:\\.\root\default:Systemrestore")
ObjSysRr.Enable("")  
If (ObjSysRr.CreateRestorePoint("VBS_Script", 12, 100)) = 0 Then
     WScript.Quit(WScript.Echo("CREATED"))
Else
     WScript.Quit(WScript.Echo("NONCREATED"))
End If


----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 20:34 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft
в целом - да. кстати, извини, напутал малость с драйвером: там не 12, а 10! то есть если ты устанавливаешь драйвер, то:
Код:
ObjSysRr.CreateRestorePoint("VBS_Script", 10, 100)
еще раз извини.
P.S>и все же попробую доразобрать тему когда будет время.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 20:49 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
12 - то, что нужно. Точка будет от имени "системы". Кстати, если использовать "7", точка создается с именем по умолчанию; через скрипт его не задать.

----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 20:54 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft

Цитата:
Точка будет от имени "системы".
ну, это то мне известно. просто я поправился, что логичнее при установке драйвера десятку юзать.
Цитата:
через скрипт его не задать.
в смысле?

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 20:57 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG

Цитата:
в смысле?

В смысле, описание точки будет "Автоматически созданная точка восстановления", независимо от того, что ты укажешь в (ObjSysRr.CreateRestorePoint("VBS_Script", 7, 100))
 
Добавлено:
Хотя, если нажать "Поиск затрагиваемых программ", там описание будет уже такое же, какое указано в скрипте.

----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 21:02 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft
не знал. я создавал точки восстановления через PowerShell v1.0, используя эту vbs'ку с нужными именами и все пучком. причем как локально, так и удаленно. может попробовать сбросить настройки до дефолтных? я про сервис восстановления.

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 21:13 05-08-2011 | Исправлено: ComradG, 21:13 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG

Цитата:
сбросить настройки до дефолтных? я про сервис восстановления.

это как?


----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 21:40 05-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Free_Soft
если не ошибаюсь, то как-то так:
Код:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default")
Set colItem = objWMIService,Get("SystemRestore")
 
colItem.RestoreDefaults()
а может и ошибаюсь. кстати, вот тебе на всякий случай памятка о типах точек:
Код:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default")
Set colItems = objWMIService.ExecQuery("Select * from SystemRestore")
 
If colItems.Count = 0 Then
  WScript.Echo "Нет ни одной точки восстановления."
Else
  For Each objItem in objItems
     WScript.Echo "Имя точки: " & objItem.Description
     WScript.Echo "Номер точки: " & objItem.SequenceNumber
 
     Select Case objItem.RestorePointType
       Case 0 strPointType = "Установка приложения"
       Case 1 strPointType = "Деинсталляция приложения"
       Case 6 strPointType = "Операция восстановления"
       Case 7 strPointType = "Системная контрольная точка"
       Case 10 strPointType = "Установка драйвера"
       Case 11 strPointType = "Первый запуск"
       Case 12 strPointType = "Изменение настроек"
       Case 13 strPointType = "Отмененная операция"
       Case 14 strPointType = "Восстановление резерной копии"
       Case Else strPointType = "Состояние контрольной точки неизвестно"
     End Select
 
     WScript.Echo "Тип контрольной точки: " & strPointType
  Next
End If
 
Set objItems = Nothing
Set objWMIService = Nothing

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 22:36 05-08-2011
Free_Soft



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Пасиб, полезненько

----------
На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

Всего записей: 1467 | Зарегистр. 19-04-2010 | Отправлено: 23:02 05-08-2011
Alinika

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HELP засада! Мне надо прописать подписи в outlook express на 90 компах, что бы  засунуть в нужную ветку параметры подписи надо получить GUID  и туда параметры засунуть,  как это сделать?
 
А всё спасибо догадалась сама

Всего записей: 1 | Зарегистр. 10-08-2011 | Отправлено: 22:50 10-08-2011 | Исправлено: Alinika, 00:26 11-08-2011
JangooFett

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
Я новичок, практически ничего не знаю в VBS, помогите, пожалуйста.  
Начальство поставило задачу:
есть каталог с вложенными подкаталогами, вложенность неограничена, нужно сделать обход по всем подкаталогам с выводом списка новых/изменившихся файлов с последнего запуска скрипта или выводом ярлыков этих файлов в папку на рабочем столе.
Спасибо.

Всего записей: 4 | Зарегистр. 23-08-2011 | Отправлено: 09:13 23-08-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
выводом ярлыков этих файлов в папку на рабочем столе.
а смысл? если вложенность каталогов неограничена, то это ж пиндыр чего будет на рабочем столе.

Цитата:
вложенность неограничена...с выводом списка новых/изменившихся файлов
опять-таки: если вложенность неограничена, то скорость работы сценария оставит желать лучшего. может, прежде, чем вообще браться за разработку скрипта стоит сперва пересмотреть критерии поставленной задачи?

Всего записей: 2037 | Зарегистр. 05-07-2008 | Отправлено: 16:44 23-08-2011 | Исправлено: ComradG, 16:45 23-08-2011
JangooFett

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну скорей не неограничена, а до 10, это я сразу максимум хватанул)

Всего записей: 4 | Зарегистр. 23-08-2011 | Отправлено: 17:56 23-08-2011
JangooFett

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашел здесь такой скрипт, он копирует новые файлы в папку, но после копирования выдает ошибку:
Строка: 37
Символ: 6
Ошибка: Файл не найден
 
И как ему жестко указать на конкретную папку, без выбора?
 

Код:
 
Option Explicit
 Dim fso, objShell, objFolder, NotFirst, flag
 
 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.BrowseForFolder(0, "Выбор начальной папки поиска", &H1, 17)
 If Not objFolder Is Nothing Then
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set objFolder = fso.GetFolder(objFolder.Self.path)
     On Error Resume Next
     fso.CreateFolder objFolder.path & "\" & Date
     On Error GoTo 0
     SearchAndMoveFiles objFolder, objFolder.path & "\" & Date
 Else: wsh.Quit
 End If
   
 If flag Then
     MsgBox "Новые файлы скопированы в '" & objFolder.path & "\" & Date & "\" & "'"
 Else
     MsgBox "Новые файлы не найдены"
 End If
   
 Set fso = Nothing
 Set objFolder = Nothing
 Set objShell = Nothing
   
 Function SearchAndMoveFiles(fld, T_path)
 Dim objSubFolder, objFile, DaysQ
   
 If Not NotFirst Then
     DaysQ = InputBox("Для поиска файлов введите кол-во дней," & vbCrLf _
         & "предшествующих сегодняшнему.", , 3)
     If DaysQ = "" Then wsh.Quit                                     ' Завершение без сообщения
     If Not IsNumeric(DaysQ) Or DaysQ = 0 Or DaysQ > 5 Then wsh.Quit ' Завершение без сообщения
 End If
   
 For Each objFile In fld.Files
     If (Now - objFile.DateLastModified) < DaysQ + 1 Then
         If T_path <> fld.path Then
             objFile.Copy T_path & "\"
             flag = True
         End If
     End If
 Next
 NotFirst = True
 For Each objSubFolder In fld.SubFolders
     SearchAndMoveFiles objSubFolder, T_path
 Next
 Set objSubFolder = Nothing
 Set objFile = Nothing
 End Function
 

Всего записей: 4 | Зарегистр. 23-08-2011 | Отправлено: 08:38 29-08-2011 | Исправлено: JangooFett, 10:51 29-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru