Какие методы записи файлов доступны в разрешениях NTFS «Создание папок / добавление данных»? - PullRequest
0 голосов
/ 23 марта 2011

Например, я пытаюсь использовать WriteLine System.IO.File.AppendText, но это не работает, и я считаю, что это проблема с разрешениями.

1 Ответ

2 голосов
/ 23 марта 2011

Кажется, что System.IO.File.AppendText открывает файл для доступа на запись и просто ищет его до конца. Проверка кода с помощью Reflector должна подтвердить это, как и быстрая точка останова на kernel32! CreateFileW с WinDbg.

Программа:

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