在NTFS“创建文件夹/附加数据”权限下可以使用哪些文件编写方法?

时间:2011-03-23 18:27:33

标签: c# .net file-permissions ntfs

例如,我正在尝试使用System.IO.File.AppendText的WriteLine,但这不起作用,我认为这是一个权限问题。

1 个答案:

答案 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, ...)