Как узнать записывамый ли каталог

Тема в разделе "Delphi", создана пользователем WinHack, 2 дек 2016.

  1. WinHack
    Довольно просто узнать, перезаписываемый ли каталог или нет. Если мы можем создать файл в указанном каталоге, значит каталог записываемый, в противном случае - нет.

    Код:
    function IsDirectoryWritable(const Dir: String): Boolean;
    var
      TempFile: array[0..MAX_PATH] of Char;
    begin
      if GetTempFileName(PChar(Dir), 'Tmp', 0, TempFile) <> 0 then
        Result := Windows.DeleteFile(TempFile)
      else
        Result := False;
    end;
    Вышепомянутая функция использует API Windows GetTempFileName. Когда 3-й параметр nUnique GetTempFileName равен нулю, Windows создает временный файл и возвращает уникальное число, которое используется для того, чтобы создать имя файла. Когда возвращаемое число не ноль, это означает, что каталог записываемый и временный файл создан успешно.