В Vista вашей программе НЕ разрешено записывать в каталог программных файлов, в котором находится ваша программа.
Теперь вам нужно сохранять свои ini-файлы в каталоге AppData.
Aописание того, как сделать это в Delphi, приведено по адресу: http://www.theabsolute.net/sware/delphivista.html#datafolder
. Для совместимости с Vista / Windows 7 остальная часть этой веб-страницы будет хорошим ориентиром.
Для вашего обновления вы не можете создать CreateDir более чем на 1 уровень одновременно.Используйте вместо этого ForceDirectories :
path:=AppDataPath+'\MyCompanyName\ProductName\';
if NOT DirectoryExists(path) then
ForceDirectories(path);
ps Не бойтесь записывать настройки программы в реестр.Вот для чего предназначен реестр.Фактически, он правильно обрабатывает настройки для разных пользователей, когда разные пользователи вошли в систему. Реестр работает аналогичным образом в 98 / Vista / 7.В то время как ini-файлы фактически устарели и больше не используются Windows.
Вы говорите, что не хотите связываться с реестром, потому что "каждый маленький кусочек, который вы добавляете в него, просто значительно замедляет работу компьютера".На самом деле это не так.Реестр - это просто база данных.И если это 10 МБ или 100 МБ, разница во времени, необходимая для доступа, является недопустимой.
Все компании, продающие программы Registry Cleaner, пытаются сохранить эту сказку.Использование их чистящих средств может принести вам больше вреда, чем пользы.Все, что им нужно сделать, это стереть одну или две важные записи, и вы можете быть в глубоком ду-ду.Пожалуйста, прочитайте эту статью о чистящих средствах реестра , и особенно раздел «Предельное повышение производительности», в котором правильно объясняется, что проблемы с реестром в Windows 98 и более ранних версиях были в основном устранены.
Если вашПрограмма добавляет в реестр более 2 или 3 КБ, это будет много, и это незначительная сумма.Используйте реестр.Сделай это правильно.