тема очередной БОЯН[:::], но поиск по форуму что-то ничего вразумительного не дал, если кто вдруг найдет чего-нить хорошее. Задача: Дан аргумент в ф-цию название директорию и надо проверить, а можно ли сейчас внутри нее создать папку или файл. Пока решил тупым методом, создал папку, если создалось то удаляю эту временную папку и говорю что все ок. Но если решение более оригинальное ?
Зависит от того, почему может быть нельзя писать. Если дело только в правах, а не во всяких запрещающих прогах, то достаточно просто проверить у директории права на создание объектов/запись атрибутов для текущего пользователя.
IceStudent Именно сейчас, могу ли я писать в эту директорию, т.е. дело не в правах а-ля рид-онли. А в том, что не держит ли какой процесс или может еще чего?
CreateFile с установленным флагом template после закрытия хэндла файл удалится если не создастся - будет возвращен -1L
hFile=CreateFileA("C:\\TestDir\\somefile.tmp", FILE_ALL_ACCESS, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, 0);
zoool Спасибо не знал, но я сделал так: Код (Text): var lFile: THandle; const c_tmp_file = '\Its_must_delete'; begin Result := DirectoryExists(ADirectory); if Result then begin lFile := CreateFile(PChar(ADirectory+c_tmp_file), GENERIC_WRITE, // open for writing 0, // do not share nil, CREATE_NEW, FILE_ATTRIBUTE_HIDDEN or FILE_FLAG_DELETE_ON_CLOSE or FILE_ATTRIBUTE_DIRECTORY, 0); Result := lFile <> INVALID_HANDLE_VALUE; if Result then CloseHandle(lFile); end;
А почему бы просто не открывать директорию как файл с атрибутами на запись? В общем мсдн лопатить по атрибутам
EvilsInterrupt А какое отношение имеет процесс, открывший директорию, к созданию файлов в ней? Разве что перехватчик какой. Имхо. Круто, конечно, для файла такой флаг, но бессмысленно. asmfan Это немного не то. Собственно, лично я не знаю преград на пути к созданию файла в каталоге, кроме запрета на уровне прав, окончания места/кол-ва возможных объектов в каталоге и какого-нить перехватчика.
IceStudent ну почему? просто попытаться открыть директорию с пом. CreateFile на запись - удалось, намана, закрываем хэндл. /это только идея/ [+] LockFile кто-нибудь на директориях проверял?