Что нового

Функция, которая запрещает переименовать файл.

StarEdik

Новичок
Сообщения
365
Репутация
4
Привет всем!!!
Помогите при написании скрипта (функции). Нужно запрещать юзеру переименовать файл. Допустим, имеем файл 1.ехе. Это имя указано в теле скрипта. Что функция должна умет.
1. Следит, если файл переименован, закрыт и переименовать файл.
2. Если это произойдет больше 3-х раз, то спокойно закрыт скрипт и удалить его.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
StarEdik,
Как вариант.
Код:
_CheckScriptName()
MsgBox(64, 'Info', 'Работаем :)')
;All next code

Func _CheckScriptName()
	If Not @Compiled Then Return
	Local $s_ScriptName = '1.exe', $s_Ini = @AppDataDir & '\CountRename.ini', $i_Count, $h_File
	If @ScriptName <> $s_ScriptName Then
		$i_Count = Number(IniRead($s_Ini, 'Count', 'Num', 0))
		If $i_Count + 1 >= 3 Then
			MsgBox(16, 'Error', 'Задолбал!!!', 3)
			FileDelete($s_Ini)
			_ScriptDestroy()
			Exit
		EndIf
		IniWrite($s_Ini, 'Count', 'Num', $i_Count + 1)
		FileSetAttrib($s_Ini, '+H')
		FileMove(@ScriptFullPath, @ScriptDir & '\' & $s_ScriptName, 1)
		MsgBox(16, 'Error', 'Не надо меня переименовывать :(')
		Exit
	EndIf

EndFunc   ;==>_CheckScriptName

Func _ScriptDestroy()
	Local $s_TempFile, $h_File, $s_Path = FileGetShortName(@ScriptFullPath), _
			$s_TextCmd = ':loop' & @CRLF & 'del ' & $s_Path & ' /q' & @CRLF & _
			'if exist ' & $s_Path & ' goto loop' & @CRLF & 'del %0'
	Do
		$s_TempFile = ''
		For $i = 1 To 3
			$s_TempFile &= Chr(Random(48, 57, 1))
		Next
		$s_TempFile = @TempDir & '\~' & $s_TempFile & '.bat'
	Until Not FileExists($s_TempFile)
	$h_File = FileOpen($s_TempFile, 2)
	FileWrite($h_File, $s_TextCmd)
	FileClose($h_File)
	Run($s_TempFile, '', @SW_HIDE)
EndFunc   ;==>_ScriptDestroy
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
madmasles
Спасибо вам добрый человек!!!
Разве у мастера своего дела может быть варианты? :scratch: – Это решение! :ok: И его нельзя не принимать. Благодарю. :IL_AutoIt_1:
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
madmasles
А что если в этой же папке лежит файл с таким же именем. :scratch:
 
Верх