Actualmente uso de esta función, basado en el código JCL, que funciona bien:¿Cómo puedo usar Delphi para probar si un Directorio es grabable?
function IsDirectoryWriteable(const AName: string): Boolean;
var
FileName: PWideChar;
H: THandle;
begin
FileName := PWideChar(IncludeTrailingPathDelimiter(AName) + 'chk.tmp');
H := CreateFile(FileName, GENERIC_READ or GENERIC_WRITE, 0, nil,
CREATE_NEW, FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, 0);
Result := H <> INVALID_HANDLE_VALUE;
DeleteFile(FileName);
end;
¿Hay algo que podría mejorar la bandera? ¿Se puede hacer la prueba sin crear realmente un archivo? ¿O esta funcionalidad ya está disponible en una de las bibliotecas RTL o Jedi?
No ¿Funciona el código para usted? ¿Hay algo sobre este enfoque que no te gusta? De hecho, es una manera muy simple (¿la más simple?) De probar el acceso de escritura de directorio. Aunque nunca he trabajado demasiado con la seguridad de Windows, supongo que un enfoque alternativo es usar la función 'GetFileSecurity'. –
@Andreas vea mi edición - si pudiera reemplazar esta función por una llamada de una función de biblioteca existente (tal vez incluso con soporte multiplataforma), esto definitivamente sería una mejora. – mjn
No puedo ver nada allí que no esté en la RTL, ¿cuál es la llamada JCL? –