Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разрешить запись файла Windows 7, Запись файла Windows 7 
:(
    Опции темы
Ahmund
  Дата 6.2.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.10.2011

Репутация: нет
Всего: нет



Доброе время суток, имеится програма каторая имеет текстовый ini файл в катором сохраняются все настройки програмы и текстовый файл базы где хранятся даные которые использует програма.
Проблема доступа к записи к этим двум файлам в Windows 7, выдает ошибку записи, когда выставляются на эти файлы вручную права на запись все работает норм. В ХР таких проблем нет.
Как разрешить запись в файл в Windows 7? файлики должны находится вместе с програмой в папке Programfiles.
PM MAIL   Вверх
Akella
Дата 6.2.2012, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Ahmund @  6.2.2012,  09:53 Найти цитируемый пост)
файлики должны находится вместе с програмой в папке Programfiles. 

1. Это плохая практика. Не делай так никогда. Используй профиль пользователя. О твоей проблеме уже говорили не раз.

2. 
Цитата(Ahmund @  6.2.2012,  09:53 Найти цитируемый пост)
 В ХР таких проблем нет.


Есть и я тебе докажу это. Попробуй поработать в XP под обычным пользователем, т.е. без прав админа, как ты это делаешь в Win7.

PM MAIL   Вверх
Ahmund
Дата 6.2.2012, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.10.2011

Репутация: нет
Всего: нет



Цитата

1. Это плохая практика. Не делай так никогда. Используй профиль пользователя. О твоей проблеме уже говорили не раз.

Почему плохая практика? почему не делать? вот например програмы такие как Totalcomander, Nod32 их ини хранятся в их же папках в каталоге Programfiles.
Можна сылочьку где такое говорилось, и есть примеры использования? искал ничего конкретного ненашол.

PM MAIL   Вверх
Snowy
Дата 6.2.2012, 12:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Ahmund @  6.2.2012,  12:07 Найти цитируемый пост)
Почему плохая практика? почему не делать?
Потому что не будет работать у пользователей без прав админа.

PM MAIL   Вверх
superVad
Дата 6.2.2012, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Цитата(Ahmund @  6.2.2012,  10:07 Найти цитируемый пост)
Почему плохая практика? почему не делать? вот например програмы такие как Totalcomander, Nod32 их ини хранятся в их же папках в каталоге Programfiles.Можна сылочьку где такое говорилось, и есть примеры использования? искал ничего конкретного ненашол.

Нодовский процесс скорее всего с админскими правами запущен - антивирус всетаки. Ну а тотал - это уже проблемы их разработчиков.
Сейчас во многих программах дают выбор при установке - портабельная версия или обычная. Портабл - все файлы кидает в свою папку, но тогда не стоит ставить программу в ПрограмФайлс (может еще начать по тихому виртуализировать, если манифета нет...).
Обычная установка должна все изменяемые файлы держать в АликейшнДата (вроде).

Ну это все теория - я еще не реализовывал этого. Просто добавил строчки в манифест что бы не виртуализировало и предупреждение при инсталяции. Ну и по умолчанию предлагаю корень системного диска вместо ПрограмФайлс.

Ну а ссылочки. Есть инфа в блогах некоторых пользователей этого форума. Думаю, что скоро дадут.
Можешь поискать в гугле по ключевым словам - uac delphi.
PM MAIL   Вверх
northener
Дата 6.2.2012, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Ahmund @  6.2.2012,  11:07 Найти цитируемый пост)
вот например програмы такие как Totalcomander

Так попробуй измени в Win7 какие-нибудь настройки TotalCommander'a. И увидишь что TotalCommander их не сохранил. Но у ТС есть возможность в командной строке задать месторасположения ini-файла. Только так с ним можно работать в Win7. 


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Keeper89
Дата 6.2.2012, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Ahmund, 
1) Получил путь из SysUtils.GetHomePath.
2) Создал там папку MySuperApp (это делает инсталлятор или приложение при первом использовании).
3) Читаешь и сохраняешь все там, как душе угодно.

Добавлено через 1 минуту и 46 секунд
Ссылки:
http://habrahabr.ru/qa/10056/#answer_43334
http://habrahabr.ru/blogs/development/70922/
http://forum.vingrad.ru/topic-244127.html

Добавлено через 2 минуты и 51 секунду
http://msdn.microsoft.com/en-us/library/ms995853.aspx


--------------------
PM MAIL WWW   Вверх
Ahmund
Дата 7.2.2012, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.10.2011

Репутация: нет
Всего: нет



superVad Спасибо за совет, сделал манифест подгрузил его, но при запуске програмы не запрашивает разришение, и при записи также выдает ошибку, в чем может быть проблема? манифестов перепробывал много разных все такаяж ситуация.
Вот манифест каторый использовал:
Код

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="UAC_Elevation_Prompt" type="win32" /> 
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
  <requestedExecutionLevel level="requireAdministrator" /> 
  </requestedPrivileges>
  </security>
  </trustInfo>
- <dependency>
- <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*" /> 
  </dependentAssembly>
  </dependency>
  </assembly>


Еще прикрепляю архив с rc и RES


Keeper89
Можно поподробней о SysUtils.GetHomePath, гуглил толком ненашол примера для использование.



Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  pd.rar 0,96 Kb
PM MAIL   Вверх
Keeper89
Дата 7.2.2012, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Первые ссылки в гугле:
docwiki.embarcadero.com/VCL/en/SysUtils.GetHomePath
docwiki.embarcadero.com/VCL/XE2/en/IOUtils.TPath.GetHomePath


--------------------
PM MAIL WWW   Вверх
northener
Дата 7.2.2012, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Имхо, не надо без явной необходимости повышать права приложения!
MS не просто так включил в ОС начиная с Висты User Access Control. И дальше будет только ужесточение прав. Самое нормальное место для хранения настроек программы это либо реестр (HKCU\Software\MyProgram), либо папка LocalAppData\MyProgram или CommonAppData\MyProgram. Узнать путь к последним можно с помощью SHGetSpecialFolderPath.

Это сообщение отредактировал(а) northener - 7.2.2012, 12:00


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Ahmund
Дата 7.2.2012, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.10.2011

Репутация: нет
Всего: нет



Keeper89, Спасибо, сылки єти находил там только функция одна написаная и все, а как ее применить в проєкте непонятно.

northener необходимость есть, так как будет не только один ини файлки  хранится а еще небольшая база в текстовом документе. Нехотелось бы базу выносить в папки юзера
PM MAIL   Вверх
northener
Дата 7.2.2012, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Ahmund @  7.2.2012,  12:33 Найти цитируемый пост)
northener необходимость есть, так как будет

А что будет в новой версии Винды? Опять придется выкручиваться, но только еще более изощренно. Почему бы сразу не пойти в ногу с мелкомягкими?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Akella
Дата 7.2.2012, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Ahmund @  7.2.2012,  10:13 Найти цитируемый пост)
superVad Спасибо за совет, сделал манифест подгрузил его, но при запуске програмы не запрашивает разришение,


Ты упорно не слушаешь советы и читать не хочешь? Ну-ну smile

Добавлено через 6 минут и 46 секунд
northener, разве не понятно? Настоящие программисты герои всегда идут в обход  smile  (с)Бармалей (Айболит-66).
PM MAIL   Вверх
Ahmund
Дата 7.2.2012, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.10.2011

Репутация: нет
Всего: нет



Хорошо если вы говорите что лутше писать все изменяющиеся файлы в определеную деректорию юзера, спорить не буду вы профи, соглашусь свами) ну как реализовать это? чтобы и в хр и в 7 програма определяла пути де будут ее файлы при инсталяции? и как инсталятор делать чтобы он правильно инсталировал все?
Смотрел функцию SysUtils.GetHomePath, непонятно как с ней работать. Если ктота делал такое  подскажите, поделитесь примером
PM MAIL   Вверх
northener
Дата 7.2.2012, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Ahmund @  7.2.2012,  14:13 Найти цитируемый пост)
 как инсталятор делать чтобы он правильно инсталировал все?

Все нормальные инсталляторы имеют набор констант, которые задают все служебные(специальные) папки. Читай описание инсталлятора.
По поводу как определить пути к этим папкам в программе повторю еще раз SHGetSpecialFolderPath
Пример использования
Пардон, пример с ошибкой. Строку 
Код

result := PChar(s);

надо заменить на 
Код

result := s;


Это сообщение отредактировал(а) northener - 7.2.2012, 15:00


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.