Вызов masm createfile не работает

Я пытаюсь создать файл в папке C:\ в коде Masm. но никогда не может добиться успеха. Я не знаю, где не так с кодом.

INCLUDE Irvine32.inc


.data
fileName BYTE "C:\\haha.txt",0
fileHandle HANDLE ?

.code

main PROC

INVOKE CreateFile,
ADDR filename, GENERIC_WRITE, DO_NOT_SHARE, null, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,0


exit
main ENDP
END main

если я изменю

fileName BYTE "haha.txt",0

он успешно запишет файл haha.txt в папку с программой. я не понимаю, почему он не записывает в C: \ также, я использую визуальную студию 2013, и я запускаю программу, запуская ее в режиме отладки, запускаю без отладки.


person Cheng Lin    schedule 03.12.2014    source источник
comment
Здесь работает (WinXP). Вам не нужно удваивать обратную косую черту, поскольку обратная косая черта не имеет особого значения в MASM или ML. Думаю, это как-то связано с привилегиями. Посмотреть здесь (решение не проверял).   -  person rkhb    schedule 04.12.2014
comment
это тоже работает, но требует перезагрузки, и я пытаюсь написать простой вирус, поэтому я не хочу перезагружать компьютер пользователя. Спасибо за вашу помощь, это хороший ответ и решение! научился.   -  person Cheng Lin    schedule 04.12.2014


Ответы (1)


Это проблема разрешения. Если вы запустите программу от имени администратора, то увидите, что файл создан. Только что проверил его с вашим кодом, и он работает.

person Devolus    schedule 03.12.2014
comment
Двойные '\\' не нужны, я ошибался. - person Devolus; 04.12.2014
comment
Вы знаете, как мне запустить его от имени администратора без внимания пользователя? например, я говорю, что если я применю его к вирусу, могу ли я сказать что-то в коде, чтобы все, что пользователь запускал, было под администратором. - person Cheng Lin; 04.12.2014
comment
Не то, что я знаю, если вы не носите его с эксплойтом. - person Devolus; 04.12.2014