Однако возникает крайне сложный вопрос — что в итоге проверять, например, на предмете культурологии. Или в курсе истории? Или в экономике? Или в курсе права?
Программа всегда может попробовать писать в файл настроек рядом с собой и отловить возникшее при этом исключение — это относительно кросплатформенный поступок, т.е. отлов ошибки, а не запрос «могу ли я сюда записать».
Если случилось исключение, то писать в папку с программой мы не можем, тогда следует записывать настройки в профиль пользователя.
Аналогично можно их оттуда читать при возникновении исключения.
Проблема «Я.Онлайн». Администратор устанавливает программу для пользователя. Пользователь ее запускает. Модуль Jabber выключен, он нажимает кнопку «Включить». Происходит скачивание, попытка установки (разумеется, что никаких окон «Введите пароль админа» не вылезает), ошибка установки, модуль не включается.
Администратор запускает под своим логином, нажимает «Включить» — под его профилем Jabber включается. Но не под профилем пользователя.
Выход: дать пользователю права админа. Запустить «Я.Онлайн». Нажать «Включить». Дождаться установки. Отобрать права админа.
Ну а если без подробностей, то System.getProperty("user.home") вернет домашнюю папку. Ну а для Windows придется попотеть, да, поскольку как мудро сказано по ссылке, «само понятие домашней папки пользователя в Windows крайне изменчиво».
Однако возникает крайне сложный вопрос — что в итоге проверять, например, на предмете культурологии. Или в курсе истории? Или в экономике? Или в курсе права?
Если случилось исключение, то писать в папку с программой мы не можем, тогда следует записывать настройки в профиль пользователя.
Аналогично можно их оттуда читать при возникновении исключения.
Администратор запускает под своим логином, нажимает «Включить» — под его профилем Jabber включается. Но не под профилем пользователя.
Выход: дать пользователю права админа. Запустить «Я.Онлайн». Нажать «Включить». Дождаться установки. Отобрать права админа.
Логика, блин.
Ну а если без подробностей, то
System.getProperty("user.home")
вернет домашнюю папку. Ну а для Windows придется попотеть, да, поскольку как мудро сказано по ссылке, «само понятие домашней папки пользователя в Windows крайне изменчиво».