![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Приветствую.
Написал программу-настройщик, которая использует IniFiles. Хранит свои настройки там же, где ее .EXE. Как вы знаете в Windows 7 намудрили с правами и метод ConfigIni := TIniFile.Create(ExtractFilePath(paramstr(0)) + 'dosbox.conf'); не дает программе записывать значения в INI файл в семерке, если программа находится в директории Program Files. Какие есть способы это сделать? Надо чтобы программа работала в Win2000-Win7 корректно. Использую Rad Studio 2010 (Delphi 2010). |
#2
|
||||
|
||||
![]() хранить данные программы там где и положено им быть, т.е. в:
c:\Users\<имя пользователя>\AppData\Roaming\<имя программы>\ |
#3
|
|||
|
|||
![]() Цитата:
Читал, что Win7 создает некую виртуальную директорию с копией Program Files, можно ли как-то с ней работать? Или как еще сделать возможным запись в PF? Накрайний случай сойдет и запрос на разрешения запуск программы, как при запуске сетапов... |
#4
|
||||
|
||||
![]() можно запустить "exe конфигуратор" (назовем его так пока) из основной программы (которая запущена под каким-то пользователем) с правами администратора, для которого запросов UAC не будет.
|
#5
|
|||
|
|||
![]() Цитата:
Перенести конфиг или еще что-то не получится. Надо как-то писать в PF (в той папке, где и бинарник лаунчера), ведь пишут же другие программы (сетапники например. только как они вызывают алерт UAC?). Должны же мелкософтцы реализовать это другим образом (ну не хранить же все в домашней папке юзера). Это вообще невозможно?! |
#6
|
||||
|
||||
![]() а, ну скопируй в папку исходника программы WindowsCert.RES и добавь:
{$R WindowsCert.RES} в раздел implementation главного модуля программы, например сразу после {$R *.dfm} и получишь запрос UAC при запуске с правом писать. Цитата:
|
#7
|
|||
|
|||
![]() NumLock, спасибо, попробую.
И на последок хочу спросить, что будет при запуске на старых ОС без UAC? (Win2000, WinXP) Просто винда проигнорирует это, ведь там все от админа обычно исполняется? |
#8
|
|||
|
|||
![]() Варианты:
- запускать процесс с правами админа. нужен соответсв. манифест (ищи приском - здесь кто-то клал его в общий доступ; или сделай сам); - разрешить запись в нужную папку (можно руками, можно "покурить" MSDN и написать соотв. код); - создавать link на файл в нужной папке, а сам файл класть в другое место (если не ошибаюсь, то работать будет только на NTFS); - написать свой писатель/читатель ini-файла, который будет при открытии указывать нужные права для доступа к файлу (тоже в MSDN). Короче, вариантов куча. Надо пробовать, проверять что сработает. |