2014-12-03 50 views
0

我想在Masm代码的C:\下创建一个文件。 但永远不会成功。我不知道代码出了什么问题。Masm invoke createfile不起作用

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:\ 另外,我正在使用Visual Studio 2013,我运行该程序通过在调试下运行它,启动时无需调试。

+0

适用于此(WinXP)。因为反斜杠在MASM或ML中没有特殊含义,所以不需要加倍反斜杠。我想这与特权有关。 [看这里](http://www.mkyong.com/computer-tips/cant-create-file-in-the-c-drive-root-directory-windows-8/)(我没有验证解决方案)。 – rkhb 2014-12-03 22:34:50

+0

也可以工作,但它需要重新启动,我试图写一个简单的病毒,所以我不想重新启动用户的计算机。感谢您的帮助,这是一个很好的答案和解决方案!学到了。 – 2014-12-04 03:58:47

回答

0

这是一个权限问题。如果以管理员身份运行该程序,则会看到该文件已创建。 只需使用代码对其进行测试即可使用。

+0

是的,我做了两个\,但它不好。 – 2014-12-03 21:57:24

+0

双'\ \'是不需要的,我错了。 – Devolus 2014-12-03 23:51:56

+0

所以你知道我的代码有什么问题吗? – 2014-12-04 03:28:36