Конференция "Прочее" » Политика NT - хранить настройки программы отдельно от программы
 
  • Добежал (18.12.08 17:17) [0]
    Думаю, большинство знает, что MS рекомендует (а с вводом висты получается сильно настаивает) в NT системах настройки хранить или в реестре, или в специальном каталоге, путь к которому можно получить через комманды shell (я уж точно не помню сейчас, не суть важно). Почему - тоже понятно, не обсуждается.

    Но вот есть у нас программа-сервис, все давно привыкли, что настройки хранятся в каталоге, куда программа установлена. И настройщики, и пользователи.

    И хотя в подавляющем большинстве случаев программа запускается как сервис, но, конечно, нужно и предусмотреть возможность запускаться в виде GUI-приложения (поддерживается и совместимость с win9x). В реестре хранить плохо из-за специфики, пользователи часто присылают нам файл настроек, описывают ситуацию, мы настраиваем под них и отсылаем файл настроек обратно, гораздо проще тут работать с файлом.

    Я вижу какие варианты всего этого:

    1) хранить все настройки только по пути, которые выдает windows...
    Плохо тем, что нужно теперь пользователям объяснять где хранится фал настроек. Тем более, в разных NT немного по разному.

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

    2) для NT-систем ниже Vista - хранить настройки в директории с программой. Для Vista хранить по полученному от ОС пути.

    Этот способ мне не нравится - как-то хаотично, неоднозначно, непонятно со стороны.

    3) хранить настройки в директории с программой, как и сейчас. Но по-умолчанию, ставить программу не в Program Files, а в другое место. А тот кто поставил в PF - пусть сам разбирается, его проблемы, пусть выдает нужные права.
    Этот способ наиболее мне симпатичен наравне с первым. Так вроде, например, WinGate делает...
    Критика?

    4) хранить настройки в папке "Мои документы". Это аналог первого способа, так частенько делают игры. Но тут я не очень понимаю, почему многие программы хранят в "Мои документы", если по идее MS рекомендует хранить в том пути, который обычно ведет в Application Data? Чем мои документы лучше или какова политика?

    Кто что думает по этому поводу вообще, может кто сталкивался с аналогичными ситуациями, что делал?

    P.S. Только не надо мне рассказывать про GUI и что рекомендации MS - аксиома. Я перечислил свое видение достоинств и недостатков каждого способа. Давайте обсудим.
  • Добежал (18.12.08 17:17) [1]
    P.S.S. Параллельно вопросик, сейчас проверять просто неудобно, а вопрос сформировался - какой путь хранения настроек выдаст NT-система, когда об этом запрашивает сервис? Для юзверей-сеансов она выдает в "Application Data" насколько я помню, а для сервиса?!
  • Anatoly Podgoretsky © (18.12.08 17:28) [2]
    > Добежал  (18.12.2008 17:17:00)  [0]

    Зачем пользователю знать где каждая программа хранит свои настройки? Как правило это неизвестно, а ты почему то хочешь пользователей нагрузить этим.
  • Anatoly Podgoretsky © (18.12.08 17:31) [3]
    > Добежал  (18.12.2008 17:17:01)  [1]

    Нет такой папки, а есть папка в профиле одного из пользователей. Службы тоже не запускаются сами по себе, а от какого пользователя. Есть пользователь "All Users"
  • Добежал (18.12.08 17:40) [4]

    > Службы тоже не запускаются сами по себе, а от какого пользователя


    согласен. Но для каждого пользователя в том же "Document and settings" есть своя папка.
    А какая папка будет у учетной записи SYSTEM?


    > Зачем пользователю знать где каждая программа хранит свои
    > настройки?


    я данный вопрос заблаговременно объяснил в топике. Читаем внимательнее.
  • Городской Шаман (18.12.08 17:41) [5]

    > Добежал   (18.12.08 17:17)  


    Для сервиса пофигу. Он пишет куда хочет, так как запускается с акканута local system.

    Более правильно было бы - отдельно сервис, отдельно GUI. Сервис пишет куда привык, GUI в настройки определённого пользователя.
  • clickmaker © (18.12.08 17:49) [6]
    > какой путь хранения настроек выдаст NT-система, когда об
    > этом запрашивает сервис?

    C:\Documents and Settings\LocalService
    C:\Documents and Settings\NetworkService
  • Добежал (18.12.08 17:50) [7]
    понимаю, пост большой, сразу все запомнить сложно. Я тогда буду отвечать на замечания цитатами из поста, если позволите.


    > Для сервиса пофигу. Он пишет куда хочет, так как запускается
    > с акканута local system


    ...


    >  хотя в подавляющем большинстве случаев программа запускается
    > как сервис, но, конечно, нужно и предусмотреть возможность
    > запускаться в виде GUI-приложения (поддерживается и совместимость
    > с win9x


    то есть, программу можно запустить из под пользовательского сеанса, такая возможность есть.

    Если ты предлагаешь при запуске из под пользователя писать в Application Data, а при запуске как сервиса писать в каталог с программной - это еще хуже, запутает вообще всех. Что я напишу в FAQ?

    Q: где программа хранит настройки?
    A: если программа запущена в виде сервиса, то хранит...



    Да пользователи с ума сойдут. А еще остается win9x!!! Не не не...
  • Добежал (18.12.08 17:51) [8]

    > clickmaker ©   (18.12.08 17:49) [6]
    > > какой путь хранения настроек выдаст NT-система, когда
    > об
    > > этом запрашивает сервис?
    >
    > C:\Documents and Settings\LocalService
    > C:\Documents and Settings\NetworkService


    угу, спасибо. Где-то так и думал.
  • Добежал (18.12.08 17:52) [9]

    > Более правильно было бы - отдельно сервис, отдельно GUI


    так и есть. Независимо от того, как запущена сервер - в виде сервиса или из под пользователя - управляется он через WEB.
  • Добежал (18.12.08 18:08) [10]
    а есть какая-то константа, которая вернет путь по которому можно сохранить настройки для ВСЕХ пользователей? Должна же быть...

    И куда она будет указывать на w2k / XP / Vista?
  • Anatoly Podgoretsky © (18.12.08 18:13) [11]
    > Добежал  (18.12.2008 17:40:04)  [4]

    LocalService/NetworlService

    А то, что ты объяснил ничего не значит, внимательно прочитай и подумай "Зачем пользователю знать где каждая программа хранит свои настройки?"
    У тебя просто неверное интерфейсное решение.
  • Anatoly Podgoretsky © (18.12.08 18:18) [12]
    > Добежал  (18.12.2008 17:51:08)  [8]

    Это условный путь, ОС не стоят на месте. Правильно запрашивать у ОС. Например Виста сильно отличается от ХР
  • clickmaker © (18.12.08 18:24) [13]
    > а есть какая-то константа, которая вернет путь по которому
    > можно сохранить настройки для ВСЕХ пользователей?

    CSIDL_COMMON_APPDATA
  • Добежал (18.12.08 18:26) [14]

    > CSIDL_COMMON_APPDATA


    спасибо! Ээээ... Если знаешь, скажи еще, пожалуйста, а в w2k / XP / Vista куда будет этот путь указывать?
  • clickmaker © (18.12.08 18:45) [15]
    > w2k / XP / Vista куда будет этот путь указывать?

    если нужна совместимость со всеми ОС, не стоит забиваться на конкретный путь.
    вчера он в w2k - C:\Documents and Settings\All Users, сегодня в висте - C:\Users\All Users, а завтра МС его еще куда-нибудь забубенит
  • Добежал (18.12.08 18:46) [16]
    Еще, кстати, вопросик - при запуске некоторых программ Vista выдает сообщение, что мол этой программе нужны админские полномочия и бла бла бла (UAC):

    http://s61.radikal.ru/i173/0812/33/7cd10e550fcd.jpg
    (зеркало): http://pic.ipicture.ru/uploads/081218/TNPVYhMIRu.jpg

    По каким признакам Vista определяет это? На одной из прог она это выдает, на другой нет...

    Как сделать так, чтобы она выдавала это окно на нужной программе? Какую-то функцию экспортировать в исходниках, какой-то флаг поставить или как?
  • Добежал (18.12.08 18:48) [17]

    > если нужна совместимость


    ага, спасибо, clickmaker!

    P.S. Да я и не забиваюсь, просто интересно, конечно конкретный путь через shell будет вытаскиваться.

    P.S.S. Товарищи, кто что скажут по сабжу, какие мысли?
  • Anatoly Podgoretsky © (18.12.08 19:10) [18]
    > clickmaker  (18.12.2008 18:45:15)  [15]

    Не стоит на это закладываться даже в рамках одной ОС
  • Anatoly Podgoretsky © (18.12.08 19:11) [19]
    > Добежал  (18.12.2008 18:46:16)  [16]

    Не лезь куда не положено.
 
Конференция "Прочее" » Политика NT - хранить настройки программы отдельно от программы
Есть новые Нет новых   [134449   +17][b:0][p:0.001]