Хорошо, я попытался использовать метод DeleteFile из kernel32.dll (используя ассемблер nasm), но он не удаляет файл и завершает работу с ошибкой.
extern _GetStdHandle@4
extern _WriteConsoleA@20
extern _DeleteFileA@4
extern _ExitProcess@4
section .data
msg: db "Could not delete the file", 10, 0
len: equ $- msg
section .bss
numCharsWritten resb 1
section .text
global _start
_start:
mov edx, [esp+8]
push dword [edx] ; pushes argument.
call _DeleteFileA@4 ; deletes file
add esp, 8 ; removes 2 arguments
cmp eax, 0 ; <cmp> = (eax == 0)
je _error ; if(<cmp>) jump to _error
push dword 0x0A ; exit value
call _ExitProcess@4 ; exit
_error:
push dword -0x0B
call _GetStdHandle@4
push dword 0 ; Arg4, unused
push numCharsWritten ; Arg3, POINTER to numCharsWritten
push dword len ; Arg2, length of the string
push msg ; Arg1, the string
push eax ; Arg0, _GetStdHandle@4
call _WriteConsoleA@20 ; Writes the string
push dword 0x0A ; exit code
call _ExitProcess@4 ; exit
Он просто печатает Не удалось удалить файл и завершает работу. Есть ли в этом коде ошибка?
add esp, 8
для одного, и вы, кажется, не приводите аргумент. - person Jens Björnhager   schedule 10.03.2014push [edx + 4]
... но я не работаю с Windows. - person Frank Kotler   schedule 10.03.2014