|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
очень простой вопрос, но тем не менее толкового решения я не нашел. Есть директория Dir - надо понять можно туда записывать файлы или нет из текущего процесса. Нашел пару решений через Directory.GetAccessControl(path);, но там слишком муторно потом с пользователями, т.к. дает все права. Неужели try - catch делать.. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 10:27 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
короче набросал такой код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
смущает WindowsIdentity.GetCurrent() - всегда ли он будет не null. Если выключена авторизация wcf не упадет ли это все нахер? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 10:35 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
netivan, тут не учитываются группы так что код не полный. Еще один недостаток данного подхода то, что возможна ситуация когда функция HasWritePermissionOnDir вернет true, а операция записи упадет с исклечением потому в промежутке между ними права были изменены. И значит тебе все равно нужно быть готовым к исключению. Поэтому проще и правильнее попытаться выполнить запись и ловить UnauthorizedAccessException. Маловероятно что WindowsIdentity.GetCurrent() вернет null т.к. процесс всегда выполняется от имени какого-то пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 11:04 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
... та часть моего "я", которая бывший злобный сисадмин, рекомендует попользоваться внешними утилитами: либо subinacl.exe (до хр/2003), либо icacls , которые выводят все разрешения/владельцев и пр., нужно только распарсить вывод командной строки ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 11:37 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
carrotik, в данном контексте идея использовать внешную программу для программы считаю неудачной т.к. это решение будет зря тратить память, замедлять программу (создание процесса в Windows - дорогое удовольствие) и не решает проблему с "окном" изменения прав между успешной проверкой и неудачной записью. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 11:54 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
carrotikбывший злобный сисадмин, рекомендует попользоваться внешними утилитами: либо subinacl.exe (до хр/2003), либо icacls Админа можешь отправить в лес собирать грибы. Задача решается через нативный Directory.GetAccessControl. Без каких-либо левых подпорок. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 12:02 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
bazilecarrotik, в данном контексте идея использовать внешную программу для программы считаю неудачной т.к. это решение будет зря тратить память, замедлять программу (создание процесса в Windows - дорогое удовольствие) и не решает проблему с "окном" изменения прав между успешной проверкой и неудачной записью. ...я не настаиваю никоим образом, но с другой стороны, если программер идет по пути "потыкаться где можно, где пустят - записать" - это тоже не совсем незатратный путь .. может, все же оптимальнее сразу писать туда, куда предусмотрено системой? (т.е. в пользовательские песочницы, включая папки All Users и им аналогичные) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 12:58 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
codearticles.rucarrotikбывший злобный сисадмин, рекомендует попользоваться внешними утилитами: либо subinacl.exe (до хр/2003), либо icacls Админа можешь отправить в лес собирать грибы. Задача решается через нативный Directory.GetAccessControl. Без каких-либо левых подпорок. ...указанные утилиты хотя и являются подпорками, но никак не левые, а от Майкрософт (ну, или поддерживаемые им) ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 13:03 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
carrotik...указанные утилиты хотя и являются подпорками, но никак не левые, а от Майкрософт (ну, или поддерживаемые им) ... "Левые подпорки" имелось ввиду по отношению к твоей программе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 13:52 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
carrotikесли программер идет по пути "потыкаться где можно, где пустят - записать" - это тоже не совсем незатратный путь Я не понимаю почему ты решил что netivan "тыкается" в поисках каталога пригодного для записи. Единственное что мы пока знаем, так это что у него WCF сервис внутри которого необходимо организовать такую проверку. netivan, если не секрет, расскажи зачем тебе это понадобилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 14:40 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
bazilecarrotikесли программер идет по пути "потыкаться где можно, где пустят - записать" - это тоже не совсем незатратный путь Я не понимаю почему ты решил что netivan "тыкается" в поисках каталога пригодного для записи. Единственное что мы пока знаем, так это что у него WCF сервис внутри которого необходимо организовать такую проверку. netivan, если не секрет, расскажи зачем тебе это понадобилось? для проверки - может ли приложение писать временные сборки в директорию:) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 14:47 |
|
Как проверить права на директорию?
|
|||
---|---|---|---|
#18+
netivan, чем каталог Temp не устраивает? Он всегда открыт для записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 15:01 |
|
|
start [/forum/topic.php?fid=20&fpage=108&tid=1402473]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 335ms |
total: | 467ms |
0 / 0 |