2011-03-23 114 views
0

例如,我試圖使用System.IO.File.AppendText的WriteLine,但這不起作用,我相信這是一個權限問題。在NTFS「創建文件夾/附加數據」權限下,哪些文件寫入方法可用?

+0

什麼是「不工作」是什麼意思?如果你需要幫助,你需要提供具體的信息。對你的技工說:「我的車不工作,我該如何解決這個問題,費用是多少?」是不夠的,是嗎? – 2011-03-23 18:29:41

+1

如果我有日誌記錄(又名寫權限),我可以更具體地說明爲什麼! :)告訴我,安德森先生,如果您無法登錄,有什麼好的例外?另外,在儘可能複製我的機器上的設置時,我會得到一個權限異常。 – paIncrease 2011-03-23 18:37:23

回答

2

看來,System.IO.File.AppendText打開文件進行寫入訪問,只是尋求它的結束。使用Reflector檢查代碼應該驗證,就像使用WinDbg的kernel32!Cre​​ateFileW上的快速斷點一樣。

程序:

class Program 
{ 
    static void Main(string[] args) 
    { 
     System.IO.File.AppendText(@"C:\Temp\blah").WriteLine("Boo"); 
    } 
} 

斷點:

KERNEL32!CreateFileW: 
757322fb 8bff   mov  edi,edi 
0:000> dd esp 
002cf1a8 58741b05 022ab244 40000000 00000001 
002cf1b8 00000000 00000004 08100000 00000000 
002cf1c8 14236e28 59e65d80 002cf270 0000001c 
0:000> du 022ab244 
022ab244 "C:\Temp\blah" 

的dwDesiredAccess參數是0x40000000之後,這是GENERIC_WRITE。

你將極有可能給自己建造一個FileStream:

new FileStream("blah", FileMode.Open, System.Security.AccessControl.FileSystemRights.AppendData, ...) 
+0

這些都是很好的工具,謝謝。 – paIncrease 2011-03-23 20:01:09