Как правильней проверить путь?
От: Аноним  
Дата: 30.01.11 19:14
Оценка:
Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно)
Re: Как правильней проверить путь?
От: ononim  
Дата: 30.01.11 19:45
Оценка: 1 (1) +4
А>Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно)
1) GetFileAttributes — один сисколл (NtQueryAttributesFile), FindFirstFile — три штуки (NtOpenFile/NtQueryDirecoryFile/NtClose).
2) Мона так настроить права доступа что к директории доступа не будет а к файлу в ней — будет. GetFileAttributes в этом случае сработает а FindFirstFile скажет access denied.
3) GetFileAttributes тупо требует написать меньше кода.
Так что я предпочитаю GetFileAttributes. Может кто-то знает преимущества FindFirstFile перед ней, я — так сходу не могу придумать.
Как много веселых ребят, и все делают велосипед...
Re: Как правильней проверить путь?
От: Centaur Россия  
Дата: 31.01.11 17:16
Оценка: +5
Здравствуйте, Аноним, Вы писали:

А>Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно)


Единственный правильный способ проверить путь — это попытаться сделать с ним то, что вы собираетесь с ним делать. Записать в него файл, прочитать из него файл, удалить из него файл, создать в нём подкаталог. Если удалось, хорошо. Если не удалось, ловим код ошибки и показываем пользователю.

Иначе вам придётся продублировать код проверки прав, и всё равно будут случаи, что сейчас права есть, а через 200 миллисекунд их не будет. А в особо тяжёлых случаях возможны security-дыры.
Re[2]: Как правильней проверить путь?
От: fuyant  
Дата: 31.01.11 17:58
Оценка:
Здравствуйте, ononim, Вы писали:

А>>Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно)

O>1) GetFileAttributes — один сисколл (NtQueryAttributesFile), FindFirstFile — три штуки (NtOpenFile/NtQueryDirecoryFile/NtClose).
O>2) Мона так настроить права доступа что к директории доступа не будет а к файлу в ней — будет. GetFileAttributes в этом случае сработает а FindFirstFile скажет access denied.
O>3) GetFileAttributes тупо требует написать меньше кода.
O>Так что я предпочитаю GetFileAttributes. Может кто-то знает преимущества FindFirstFile перед ней, я — так сходу не могу придумать.

А как, кстати, работает PathFileExists, не подскажете?
Re[3]: Как правильней проверить путь?
От: ononim  
Дата: 31.01.11 18:23
Оценка: 19 (3) :)
F>А как, кстати, работает PathFileExists, не подскажете?
Как много веселых ребят, и все делают велосипед...
Re[2]: Как правильней проверить путь?
От: Pavel Dvorkin Россия  
Дата: 01.02.11 10:59
Оценка:
Здравствуйте, Centaur, Вы писали:


C>Иначе вам придётся продублировать код проверки прав, и всё равно будут случаи, что сейчас права есть, а через 200 миллисекунд их не будет.


Или файла самого не будет
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.