Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.08.2010, 12:04
Ticksy Ticksy вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 20
Репутация: 10
По умолчанию Ошибка записи INI файла в Win7

Приветствую.

Написал программу-настройщик, которая использует IniFiles. Хранит свои настройки там же, где ее .EXE.

Как вы знаете в Windows 7 намудрили с правами и метод ConfigIni := TIniFile.Create(ExtractFilePath(paramstr(0)) + 'dosbox.conf'); не дает программе записывать значения в INI файл в семерке, если программа находится в директории Program Files.

Какие есть способы это сделать? Надо чтобы программа работала в Win2000-Win7 корректно.

Использую Rad Studio 2010 (Delphi 2010).
Ответить с цитированием
  #2  
Старый 01.08.2010, 14:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

хранить данные программы там где и положено им быть, т.е. в:
c:\Users\<имя пользователя>\AppData\Roaming\<имя программы>\
Ответить с цитированием
  #3  
Старый 01.08.2010, 14:46
Ticksy Ticksy вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
хранить данные программы там где и положено им быть, т.е. в:
c:\Users\<имя пользователя>\AppData\Roaming\<имя программы>\
Думал уже про это, но не подойдет. Моя программа настраивает конфиг другой программы (а конфиг этой программы должен лежать рядом с ней).

Читал, что Win7 создает некую виртуальную директорию с копией Program Files, можно ли как-то с ней работать? Или как еще сделать возможным запись в PF? Накрайний случай сойдет и запрос на разрешения запуск программы, как при запуске сетапов...
Ответить с цитированием
  #4  
Старый 01.08.2010, 18:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

можно запустить "exe конфигуратор" (назовем его так пока) из основной программы (которая запущена под каким-то пользователем) с правами администратора, для которого запросов UAC не будет.
Ответить с цитированием
  #5  
Старый 01.08.2010, 19:03
Ticksy Ticksy вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
можно запустить "exe конфигуратор" (назовем его так пока) из основной программы (которая запущена под каким-то пользователем) с правами администратора, для которого запросов UAC не будет.
Дело в том, что эта программа является лаунчером к игре, в которой есть пункт настроек игры.

Перенести конфиг или еще что-то не получится. Надо как-то писать в PF (в той папке, где и бинарник лаунчера), ведь пишут же другие программы (сетапники например. только как они вызывают алерт UAC?). Должны же мелкософтцы реализовать это другим образом (ну не хранить же все в домашней папке юзера). Это вообще невозможно?!
Ответить с цитированием
  #6  
Старый 02.08.2010, 09:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а, ну скопируй в папку исходника программы WindowsCert.RES и добавь:
{$R WindowsCert.RES}
в раздел implementation главного модуля программы, например сразу после {$R *.dfm}
и получишь запрос UAC при запуске с правом писать.
Цитата:
var
Form1: TForm1;

implementation

{$R *.dfm}
{$R WindowsCert.RES}
http://data.cod.ru/64493
Ответить с цитированием
  #7  
Старый 02.08.2010, 19:43
Ticksy Ticksy вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 20
Репутация: 10
По умолчанию

NumLock, спасибо, попробую.

И на последок хочу спросить, что будет при запуске на старых ОС без UAC? (Win2000, WinXP) Просто винда проигнорирует это, ведь там все от админа обычно исполняется?
Ответить с цитированием
  #8  
Старый 02.08.2010, 20:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Варианты:
- запускать процесс с правами админа. нужен соответсв. манифест (ищи приском - здесь кто-то клал его в общий доступ; или сделай сам);
- разрешить запись в нужную папку (можно руками, можно "покурить" MSDN и написать соотв. код);
- создавать link на файл в нужной папке, а сам файл класть в другое место (если не ошибаюсь, то работать будет только на NTFS);
- написать свой писатель/читатель ini-файла, который будет при открытии указывать нужные права для доступа к файлу (тоже в MSDN).

Короче, вариантов куча. Надо пробовать, проверять что сработает.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025