· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Парадокс прав доступа к файлам

Посл.отвђт Сообщенiе


Дата: Ноя 12, 2003 01:12:36

Программа 1 пишет файл в "...\Program Files\SomeProg\..."
Всё ОК.

Программа 2 пытается удалить этот файл.
DeleteFile возвращает "Отказано в доступе".

Обе программы работают в одном и том же контексте.

Как это может быть?


Дата: Ноя 12, 2003 01:31:04

Foamplast
Программа 1 должна вызвать CloseHandle перед тем как программа 2 попытается удалить файл. Контекст тут особой роли не играет.


Дата: Ноя 12, 2003 04:57:53

Quantum
Может, тут просто проблема с правом DELETE при вызове CreateFile ?


Дата: Ноя 12, 2003 06:44:21

Grenader
Имеете в виду атрибут readonly? Тогда перед удалением нужно его снять через SetFileAttributes.


Дата: Ноя 12, 2003 07:01:24 · Поправил: Grenader

Quantum
Я имел в виду права доступа к файлу (в случае использования NTFS) :) В DACL access mask для текущего пользователя разрешает чтение/запись, но не удаление...

"To delete or rename a file, you must have either delete permission on the file or delete child permission in the parent directory..." - MSDN


Дата: Ноя 20, 2003 04:54:19

1. Первая программа работает и завершается, только после
этого я запускаю вторую.

2. Всё это происходит в сеансе Администратора Windows
2000. Т.е. я потом эти файлы из
"C:\Program Files\SomeProg\*.*" стираю ручками.

3. Пути к файлам проверил. Идентичны.

4. Код первой программы:

Push Eax
CreateFile [EBP_PARAM2], GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL |
FILE_ATTRIBUTE_READONLY |
FILE_FLAG_SEQUENTIAL_SCAN, NULL

Pop Ebx
Push Eax
WriteFile Eax, Ebx, [EBP_PARAM3], nWritten, NULL

Pop Eax
CloseHandle Eax

Здесь параметр 2 - путь, параметр 3 - размер данных

5. Код второй программы:

DeleteFile strPath

В чём же, всё-таки дело?


Дата: Ноя 20, 2003 06:09:00

Foamplast
> FILE_ATTRIBUTE_READONLY
Убрать!


Дата: Ноя 21, 2003 01:19:20

Блин, из-за тривиальной невнимательности столько возни...
Спасибо всем, кто всё-таки помог найти оплошность!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069