Про Program Files и права записи

Basketbol
Дата: 10.11.2019 09:35:25
Привет всем.
Сделал одну софтину, и даю ее людям.
Инсталяшка устанавливает ее в папку Program Files.
В программе используется:
1. Ini-файл
2. Sqlie база
Я все это положил в подпапки с программой.

Соответственно, когда пользователь запускает программу, она пытается записать в данные в инифайл, создать базу.
И естественно вылетает ошибка что не может.
Я всем пишу - мол запускай от Админа.
Но ведь это не выход.

Я правильно понимаю что базу и инифайл я должен хранить в стандартной папке App Data ?
DmSer
Дата: 10.11.2019 12:01:30
Используйте переменные окружения:

%USERPROFILE% (Ведёт на C:\Users\UserName)
%APPDATA% (C:\Users\UserName\AppData\Roaming)
%LOCALAPPDATA% (C:\Users\UserName\AppData\Local)

%ALLUSERSPROFILE% или %ProgramData% (C:\ProgramData)

Также Вы можете настраивать разрешение на доступ в свой раздел в папке "Program Files".
Либо составить инструкцию для пользователей, либо делать это автоматически на этапе установки.
X-Cite
Дата: 10.11.2019 12:19:27
В силу определенных мер безопасности, тем более у вас есть инсталяшка, то appdata - будет норм...

http://docwiki.embarcadero.com/Libraries/Rio/en/System.IOUtils.TPath_Methods


TPath.GetCachePath
TPath.GetPublicPath

также есть полезные статьи:

https://www.gunsmoker.ru/2015/01/never-use-relative-file-paths.html
ёёёёё
Дата: 10.11.2019 17:56:45
Basketbol,

А мы там, где ось новее висты, ставим просто в С:\каталогмоейпрограммы. Ни одно животное в процессе эксплуатации не погибло.
alekcvp
Дата: 11.11.2019 10:10:52
ёёёёё
Basketbol,
А мы там, где ось новее висты, ставим просто в С:\каталогмоейпрограммы. Ни одно животное в процессе эксплуатации не погибло.

1. В папки на диске C: по-умолчанию права на запись есть только у админов и у тех кто там эту папку создал, т.е. под другим пользователем не заработает, если права не менять.
2. Как пользователь хочу сказать: горите в аду, те кто требует устанавливать свой софт в корень диска C: или запускать приложение от админа, чтобы оно могло писать свои данные в Program Files.
DmSer
Дата: 11.11.2019 12:47:32
alekcvp

1. В папки на диске C: по-умолчанию права на запись есть только у админов и у тех кто там эту папку создал, т.е. под другим пользователем не заработает, если права не менять.
2. Как пользователь хочу сказать: горите в аду, те кто требует устанавливать свой софт в корень диска C:


1. Это верно. Автоматически нужно настраивать права на запись в момент инсталляции.
2. Установка в корне диска "C" облегчает техподдержку. Сейчас может и не так актуально, почти у всех есть интернет и все ставят программы для удалённого доступа, а раньше очень часто приходилось объяснять по телефону: открой проводник, залезь на диск "C:\", зайди в папку такую-то, скопируй то-то и т.д.
Василий 2
Дата: 11.11.2019 13:59:16
alekcvp

2. Как пользователь хочу сказать: горите в аду, те кто требует устанавливать свой софт в корень диска C: или запускать приложение от админа, чтобы оно могло писать свои данные в Program Files.

Как пользователь хочу сказать: горите в аду, те, кто заставляет свой софт безальтернативно (!) гадить в appdata, commonfiles и реестре.
И еще - одно дело юзерский софт общего назначения, другое - рабочий.
Мимопроходящий
Дата: 11.11.2019 14:06:09

11.11.2019 13:59, Василий 2 пишет:
> гадить в appdata, commonfiles и реестре.

а ты читал руководящие и направляющие документы партии и
правительства
msdn на эту тему?

Posted via ActualForum NNTP Server 1.5

s62
Дата: 11.11.2019 15:25:51
Василий 2,

так appdata для того и существует, чтобы приложения там свои данные держали.
Что плохо бывает - это когда деинсталлятор не полностью удаляет за программой - из appdata, из реестра и т.д.
alekcvp
Дата: 11.11.2019 15:27:13
Василий 2
Как пользователь хочу сказать: горите в аду, те, кто заставляет свой софт безальтернативно (!) гадить в appdata, commonfiles и реестре.

Appdata, commonfiles и реестр специально сделаны для того, чтобы в них "гадить". Обычному пользователю их содержимое не видно и не слышно, в отличие от корня диска C:. Вам-то чем их содержимое помешало?

И если про реестр ещё можно с натяжкой сказать что его захламление тормозит систему, то содержимое appdata и commonfiles на производительность не влияет от слова совсем (до тех пор, пока счёт объектов там не идёт на тысячи, но я такого в жизни не встречал).
s62
Что плохо бывает - это когда деинсталлятор не полностью удаляет за программой - из appdata, из реестра и т.д.
В идеале должна быть опция: сохранить настройки, на случай переустановки программы или удалить нафиг всё.