Es funktioniert aber auch mit den normalen AutoIt-Funktionen, indem man die Datei im Binary-Mode liest und schreibt:
[autoit]
_NotExecute(True, @ScriptDir & '\test.exe') ; Beispielaufruf: Exe nicht ausführbar
MsgBox(0, 'Test', 'Datei ist jetzt nicht ausführbar!')
_NotExecute(False, @ScriptDir & '\test.exe') ; Beispielaufruf: Exe wieder ausführbar
MsgBox(0, 'Test', 'Datei ist jetzt wieder ausführbar!')
Func _NotExecute($bExe, $sFilename)
Local $sHeader, $hFile, $sFile
$hFile = FileOpen($sFilename, 16)
$sFile = FileRead($hFile)
FileClose($hFile)
If $bExe Then
$sHeader = '0x0000'
Else
$sHeader = '0x4D5A'
EndIf
$sFile = $sHeader & StringMid($sFile, 7)
$hFile = FileOpen($sFilename, 2 + 16)
FileWrite($hFile, $sFile)
FileClose($hFile)
EndFunc ;==>_NotExecute
Dabei wird allerdings die gesamte Exedatei in den Speicher geladen.