Юрий
Новичок
- Сообщения
- 82
- Репутация
- 3
Доброго времени суток, форумчане. Программа предназначена для сокрытия архива в (по идее) картинке (но наверное в любом файле можно) путём создания и запуска .bat.
Код батника:
Код скрипта:
Суть проблемы:
если закоментировать строчки, которые я обзначил маркерами, то каким-то чудом конечный файл всё таки перемещается в @ScriptDir а все те файлы, которые должны удалиться - удаляются, кроме батника, так как он, наверное, исполняется.
Прав вроде как должно хватать. Пробовал как из 7 так и из ХР.
Уже голова пухнет ни как не пойму что за беда-то такая. Где же я сглупил?
Добавлено:
Юрий [?]
нашёл, кое-что - вот тут я дурь написал. ещё бы найти как в cmd комманду выполнить...
Код батника:
Код:
copy / b (имя файла в который прятать) + (имя архива, который прячем) (название конечного файла)
все имена файлов без пробелов, использую латиницу и цифры(и только), названиеконечного файла дублирую с именем файла в который прячу
Код скрипта:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icon.ico
#EndRegion
#Region <<< Библиотеки и Опции >>>
#RequireAdmin
#EndRegion
#Region <<< Переменные >>>
;~ $Files - выбераем что скрывать
;~ $Split
;~ $FileToHideIn - выбераем во что засунуть
Local $Files = FileOpenDialog( "Выберите файлы для сокрытия..." , @ScriptDir , "Все (*.*)" , 7 )
;~ раскидываем имена файлов из одной строчки в массив
Local $Split = StringSplit( $Files , "|" )
local $FileToHideIn = FileOpenDialog( "Выберите файл в который прятать..." , @ScriptDir , "Все (*.*)" )
For $i = 1 To StringLen($FileToHideIn)
;отделяем только имя файла, без пути
If StringLeft( StringRight($FileToHideIn,$i) , 1 ) = "\" Then
$FileToHideIn = StringRight($FileToHideIn,$i-1)
ExitLoop
EndIf
Next
#EndRegion
#Region <<< Функции >>>
_MakingArchive()
_CreateAndRunBat()
Func _MakingArchive() ; по названию понятно
;~ всё, что мы делаем с файлами происходит во временной папке пользователя
;~ создаём файл лист для rar.exe что бы он знал что засунуть в архив
Local $FileList = FileOpen( @TempDir & "\FilesToHide.lst" , 10 )
For $i = 2 To $Split[0]
FileWrite( $FileList , $Split[$i] & @CRLF )
;~ а заодно и файлы в @TempDir перебрасываем
FileCopy( $Split[1] & "\" & $Split[$i] , @TempDir , 9 )
Next
FileClose($FileList)
;~ пишем бинарный код rar.exe в новый пустой файл
_RarExeWrite( @TempDir & "\rar.exe" )
RunWait( "rar a HidenArch @FilesToHide.lst" , @TempDir , 0 )
;~ удаляем всё то, что понасоздавали, кроме архива естественно)
For $i = 2 To $Split[0] ;<<<---!!!--->>>
FileDelete( @TempDir & "\" & $Split[$i] ) ;<<<---!!!--->>>
Next ;<<<---!!!--->>>
FileDelete(@TempDir & "\rar.exe")
FileDelete(@TempDir & "\FilesToHide.lst")
EndFunc
;=============================================================================================================================
;=============================================================================================================================
Func _CreateAndRunBat() ; тоже понятно по названию
Local $BatFile = FileOpen( @TempDir & "\Hider.bat" , 10 )
FileWriteLine($BatFile, 'copy / b ' & $FileToHideIn & ' + HidenArch.rar SECRET' & $FileToHideIn)
FileClose($BatFile)
ShellExecuteWait(@TempDir & "\Hider.bat", @TempDir, @SW_HIDE)
;~ удаляем лишнее
FileDelete( @TempDir & "\Hider.bat" ) ;<<<---!!!--->>>
FileDelete( @TempDir & "\HidenArch.rar" ) ;<<<---!!!--->>>
FileDelete( @TempDir & "\" & $FileToHideIn ) ;<<<---!!!--->>>
;~ перемещяем конечный файл
FileMove( @TempDir & "\SECRET" & $FileToHideIn , @ScriptDir , 1 )
Beep( 1000 , 100 )
Exit
EndFunc
;=============================================================================================================================
;=============================================================================================================================
Func _RarExeWrite ($File) ; создаёт rar.exe (часть winrar)
;длинный бинарный код на 10k строчек
;и одна - которая собственно файл создаёт
;описывать это незачем - там проблем нет
EndFunc
Суть проблемы:
если закоментировать строчки, которые я обзначил маркерами, то каким-то чудом конечный файл всё таки перемещается в @ScriptDir а все те файлы, которые должны удалиться - удаляются, кроме батника, так как он, наверное, исполняется.
Прав вроде как должно хватать. Пробовал как из 7 так и из ХР.
Уже голова пухнет ни как не пойму что за беда-то такая. Где же я сглупил?
Добавлено:
Сообщение автоматически объединено:
Юрий [?]
Код:
RunWait( "rar a HidenArch @FilesToHide.lst" , @TempDir , 0 )
нашёл, кое-что - вот тут я дурь написал. ещё бы найти как в cmd комманду выполнить...