例如,我正在尝试使用System.IO.File.AppendText的WriteLine,但这不起作用,我认为这是一个权限问题。
答案 0 :(得分:2)
似乎System.IO.File.AppendText打开文件进行写访问,并且只是寻求结束。使用Reflector查看代码应该验证,以及在kernel32上的快速断点!使用WinDbg的CreateFileW。
该计划:
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, ...)