![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| GrigoriyFomin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 16.11.2010 Репутация: нет Всего: нет |
Возникла роблема с приложением. Сохраняю глобальные параметры программы в папке следующим образом:
На некоторых машинах при запуске с правами админа выдает ошибку, что не могу писать в файл. Лечится ручной установкой прав полного доступа для всех на нужную папку с файлом настройки, но это имхо некошерно. Можно как-то автоматом задавать права для нужной папки или программно проверять, что в папку записать файл не удасться? |
|||
|
||||
| CodeMonkey |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Это - неправильное решение.
Правильное решение: 1. Хранить конфигурацию в %UserName%\AppData. 2. Если первый запуск и конфигурации ещё нет - то её можно взять с AllUsers (только чтение). 3. В AllUsers мастер-копию настроек пишет установщик программы. Добавлено через 1 минуту и 46 секунд
На Vista+ программа может быть запущена из-под ограниченного маркера административной учётной записи.
Можно, но не нужно.
Можно, но не нужно. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||
|
|||||||
| GrigoriyFomin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 16.11.2010 Репутация: нет Всего: нет |
Фишка в том, что в файл настройки пишется информация (регистрационная) при первом запуске программы, инсталлятор на тот момент этого файла еще не имеет.
И какой тогда по мнению мйкрософта "правильный" путь сохранения глобальных настроек программы? |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
До появления инсталлятора сделать это можно вручную.
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
А кто это делает? По идее, как я это вижу, должна быть программа-регистратор. Типа, Register.exe. При запуске она показывает формочку, туда вводишь свои данные, она их проверяет (при необходимости - через интернет), и сохраняет в файл в AllUsers. Чтобы это работало программа должна запускаться равно как и установщик - под администратором. Это означает, что: 1. Она должна явно проверить, что её запустил администратор. Если нет - сказать пользователю "запусти под админом" (либо спросить логин/пароль и перезапустится сама, но это уже высший пилотаж). 2. У неё на борту должен быть манифест UAC с requireAdministrator. 3. Она должна распознавать ситуацию "нет прав доступа" к папке \файлу в AllUsers и показывать пользователю сообщение. Тогда операция записи будет успешна для любых систем (от Windows 2000 до Winodws 7), а в случае неудачи (редкий случай) - пользователь сможет понять, что не так. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |