5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
|
1 | |
Отказано в доступе к файлу18.09.2017, 14:10. Показов 3437. Ответов 7
Всем привет. Сначала хотел задать вопрос в разделе Windows, но к программированию, пожалуй, ближе
Итак, у меня есть приложение, которое я разрабатываю. Приложение ставится простой распаковкой архива, после чего, при первом запуске оно уже добавляет записи в реестр и производит прочие манипуляции. В приложении имеется dll, через которую организована работа с файлом настроек пользователя. Само приложение является плагином для AutoCAD и также имеет отдельный exe'шник с настройками (это про него я выше написал). И приложение и плагин для AutoCAD используют dll для работы с файлом настроек. В самом каталоге всего моего приложения есть подкаталог UserData, в котором и лежит файл настроек. Ситуация следующая - имеется комп с Windows 8.1. Диск не разделен - только локальный диск С:/. Пользователь только один и у него написано, что он Администратор. Однако, при запуске приложения ловится ошибка "Отказано в доступе к файлу...". Приложение не может редактировать файл настроек. Если его запустить с правами администратора, то все нормально. Но в таком случае нужно и сам AutoCAD каждый раз запускать с правами администратора, иначе ловится та же самая ошибка. Самое интересное - другие манипуляции с этим каталогом (создание там новых файлов) происходят без проблем Как правильно поступить в данном случае? У меня есть предположение (как вариант) - перенести директорию UserData моего приложения в системную папку настроек приложений пользователя. Т.е. С:/Users/{username}/AppData/.... По идее, для записи туда не нужны права админа Включать файл манифеста с правами админа не вариант. Сами права как таковые практически не нужны, т.к. действий там мало, требующих прав, и производятся они один раз. Проверял на другой ОС (вин 10) - ошибки при редактировании этого файла не возникает, хотя программа запущена без админских прав
0
|
18.09.2017, 14:10 | |
Ответы с готовыми решениями:
7
Отказано в доступе Отказано в доступе отказано в доступе к папке Отказано в доступе по пути |
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
18.09.2017, 14:32 | 2 |
значит вы администратор но урезанный как вариант мешает UAK и тут его или выключить или настроить... по мне так всё таки лучше выяснить почему это происходит нежели растаскивать настройки по машине и почему эта директория требует для работы с файлом повышенных прав
0
|
Администратор
|
|
18.09.2017, 14:54 | 3 |
Это правильное решение
Добавлено через 3 минуты Потому что для доступа к некоторым каталогам требуются elevated права которые по умолчанию отсутствуют. Примеры таких каталогов - Program Files, Windows. Единственным правильным решением является как раз отказ от хранения изменяемых данных в этих папках и хранить их в профиле пользователя.
0
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
18.09.2017, 17:25 | 4 |
OwenGlendower позвольте с вами не согласится так как elevated актуальны под учётками пользователя но не под учёткой администратора так как администратор волен делать всё что ему вздумается и немыслимо чтобы у рута просило ещё что то большего чем рут. спокойно записываю в папки Program Files, Windows под локальным админом и не испытываю ни каких трудностей (даже трудностей в AD, тем более всегда можно повысить свои привилегии а иногда это даже приходится делать), если же речь идёт о приложении которое должно работать как угодно и под чем угодно то конечно лучше перемещать в пользовательскую папку или как вариант (не особо хороший) вообще отказаться от хранения настроек в файле и хранить их в реестре в ветке доступной для пользака если данные небольшие.
0
|
Администратор
|
||||||
18.09.2017, 18:12 | 5 | |||||
Возможно я немного путаюсь с терминологией. При включенном UAC приложения запущенные от имени администратор работают под т.н. restricted токеном с урезаннымми привиллегиями, которые при необходимости можно получить обратно в виде elevated токена1. Именно поэтому проводник отображает дополнительный диалог с кнопкой Continue с UAC щитом при попытке копирования файлов в папку Program Files.
1. Возможно в случае с админом будет более правильно называть его unrestricted, а термин elevated оставить для случая когда не-администратор запускает приложение от имени администратора повышая таким образом привилегии. Но это не меняет сути происходящего для админов. Вот для сравнения информация которую показывает Process Explorer для процессов запущенных под учеткой администратора в случае "обычного запуска" и запуска через "run as administrator". В зависимости от того как было запушено наше приложение следующий код приведет к исключению или к успешному выполнению.
Никто и не говорил что должны быть какие-то "трудности". Речь идет только о том если UAC включен, то при выполнении некоторых операций появляется известное окно для подтверждения действия.
3
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
18.09.2017, 18:31 | 6 |
OwenGlendower полностью согласен.
0
|
Ушел с форума
|
|
18.09.2017, 19:45 | 7 |
В терминологии MS это называется "limited token" и "full token". А restricted token или
write-restricted token означает немного другое (там весь доступ или доступ на запись отбирается, за исключением прав, которые назначены явно).
1
|
Администратор
|
|
18.09.2017, 19:46 | 8 |
Убежденный, спасибо за уточнение
0
|
18.09.2017, 19:46 | |
18.09.2017, 19:46 | |
Помогаю со студенческими работами здесь
8
Отказано в доступе к разделу реестра Найти все картинки. Отказано в доступе Отказано в доступе при подключении к БД MySQL Отказано в доступе по пути Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |