Является ли этот код PInvoke правильным и надежным?

В этот вопрос я искал простое решение для разблокировки файлов. Благодаря всем комментариям и ответам я нашел простое решение с помощью PInvoking DeleteFile .

Это работает, но поскольку я никогда не использовал файловые операции через PInvoke (Win32), я не знать, есть ли какие-то подводные камни или есть другой метод вызова DeleteFile для удаления альтернативного потока файла.

Я также не знаю, нужно ли мне заключить вызов в попробуйте / поймать или, если достаточно, просто посмотреть на логический результат. В моих тестах не возникало никаких исключений, но я не знаю, что произойдет в реальном мире.

public class FileUnblocker {

    [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool DeleteFile(string name );

    public bool Unblock(string fileName) {
        return DeleteFile(fileName+ ":Zone.Identifier");
    }
}

Выглядит ли этот код надежным?

Обновление
Я опубликовал неполный метод (метод разблокировки не работал). не связывать литерал "Zone.Identifier" с именем файла). Я исправил это сейчас, извините.

21
задан Community 23 May 2017 в 12:32
поделиться