2014-12-03 27 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

相關問題