Конференция "Прочее" » Политика NT - хранить настройки программы отдельно от программы
 
  • iZEN (18.12.08 20:06) [20]
    Я так скажу, не заморачиваясь заморочками Windows.

    FreeBSD хранит настройки программ и левых сервисов в каталоге /usr/local/etc/.
    Пользовательские настройки обычно хранятся в домашнем каталоге пользователя (~/ в Unix, аналог %USERPROFILE%\ в Windows) в dot-формате — точка перед именем файла или каталога — они оказываются скрыты от глаз и не замусоривают восприятие домашнего каталога.

    Каталог %APPDATA% Windows не имеет аналогов в Unix, так как находится в подкаталоге профиля пользователя, в котором пользователь может делать что захочет. То есть структура нерегламентирована.
  • DVM © (18.12.08 21:10) [21]

    > Добежал   (18.12.08 18:46) [16]


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

    Манифест в ресурсах программы должен быть особенный.

    Для инсталляторов она еще по другим признакам определяет.
  • DVM © (18.12.08 21:11) [22]

    > P.S.S. Товарищи, кто что скажут по сабжу, какие мысли?

    а что еще надо то? Хранить в CSIDL_COMMON_APPDATA и всего делов.
  • Пробегал2.... (18.12.08 21:37) [23]
    DVM ©   (18.12.08 21:10) [21]
    Манифест в ресурсах программы должен быть особенный


    можно поподробнее?

    Никаким манифестом я не заморачивался, но на одной из прог почему-то Vista выдает это окошко. Хотя это обычная дельфовая прога, никаких ухищрений я не делал.
  • DVM © (18.12.08 22:29) [24]

    > Никаким манифестом я не заморачивался, но на одной из прог
    > почему-то Vista выдает это окошко.

    Я точно не знаю, но вызов некоторых функций WinAPI тоже приводит к выдаче таких сообщений. Вроде список видел на MSDN даже.


    > можно поподробнее?

    <trustInfo xmlns=”urn:schemas-microsoft-com:asm.v3″>
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel
            level=”requireAdministrator”
            uiAccess=”false”/>
          </requestedPrivileges>
         </security>
    </trustInfo>

    Можно просто положить рядом с файлом имя_файла_программы.exe.manifest
  • DVM © (18.12.08 22:31) [25]

    > Можно просто положить рядом с файлом имя_файла_программы.
    > exe.manifest

    Хотя нет, надо обязательно в ресурс.
  • DVM © (18.12.08 22:34) [26]
  • Добежал (19.12.08 13:32) [27]

    > вчера он в w2k - C:\Documents and Settings\All Users, сегодня
    > в висте - C:\Users\All Users, а завтра МС его еще куда-нибудь
    > забубенит


    ты меня обманул ;((((
    Не All Users, а
    All Users\Application Data



    Принципиальная разница, по-умолчанию в папке Application Data в Vista запрещен обзор... Грубо говоря, когда пользователь щелкнет по ней два раза - получит "доступ запрещен".
    И что делать? Я писал в первом посте:


    > пользователи часто присылают нам файл настроек, описывают
    > ситуацию, мы настраиваем под них и отсылаем файл настроек
    > обратно


    и что делать? Vista жжот блин ;( С одной стороны в папке с программой настройки не сохранишь - с включенным UAC в vista программа доступ не получит к настройкам. В рекомендуемой папке Application Data тоже хреново, в этом случае как объяснить пользователю действия, чтобы прислать нам файл настроек?!?!

    Не вижу пока варианта, кроме как ставить программу не в Program Files... бред какой-то...
  • wal © (19.12.08 13:43) [28]
    Хранить где положено, пользователю дать кнопочку "Выслать файл настроек"
  • Добежал (19.12.08 13:44) [29]
    да, тоже сейчас склоняюсь к этому варианту. Тем более, сервер управляется через WEB, сделать ссылочку "экспорт файла настроек", который приведет к запросу о загрузке файла. И "импорт" там же...
  • -SeM- (19.12.08 13:45) [30]

    > пользователи часто присылают нам файл настроек, описывают  
    > ситуацию, мы настраиваем под них и отсылаем файл настроек
    > обратно

    импорт/экспорт файла настроек? не заморачиваясь где на самом деле он находится в конкретной ОС
  • DVM © (19.12.08 14:22) [31]

    > Добежал   (19.12.08 13:32) [27]


    > Не вижу пока варианта, кроме как ставить программу не в
    > Program Files... бред какой-то...

    А все потому, что неверно продумано приложение. Не следует делать по, которое одновременно может запускаться как сервис и как обычное приложение. Либо так либо сяк. Проблемы бы не было.
    Если же хотите поддерживать совместимость с Win9x то просто не давайте программе запускаться не как сервис под WinNT. А под Win9x она пусть хранит свои настройки где хочет, хоть в папке с программой, под WinNT - там где положено.
  • Eraser © (19.12.08 14:50) [32]
    > [0] Добежал   (18.12.08 17:17)

    а вы пробовали запускать ваше приложение в XP, но не с правами админа, как успехи?

    по-моему самый простой и надежный вариант - хранить настройки там же, но, как тут уже писали, добавить манифест, который будет при запуске запрашивать права админа + сделать проверку прав при запусе внутри программы - если пользователь не админ, то показывать предупреждение и закрывать программу.
  • Добежал (19.12.08 15:13) [33]

    > Не следует делать по, которое одновременно может запускаться
    > как сервис и как обычное приложение


    по-моему, данная рекомендация - бред.

    Программе по смыслу работы права администратора не нужны. Требовать права администратора только для того, чтобы уметь хранить настройки в каталоге с программой - как-то не феншуйно.


    > а вы пробовали запускать ваше приложение в XP, но не с правами
    > админа, как успехи?


    нормально успехи. Под продвинутым пользователем можно, ему разрешена запись в Program Files.


    > добавить манифест, который будет при запуске запрашивать
    > права админа + сделать проверку прав при запусе внутри программы
    >


    ну да, такое решение я уже выше обсуждал... Ну неплохо, конечно, окромя одного - программе по сути админские права не нужны. Это все равно что IE бы для работы просил права админа. Нелогично как-то было бы.
  • Eraser © (19.12.08 15:15) [34]
    > [33] Добежал   (19.12.08 15:13)


    > ну да, такое решение я уже выше обсуждал... Ну неплохо,
    > конечно, окромя одного - программе по сути админские права
    > не нужны. Это все равно что IE бы для работы просил права
    > админа. Нелогично как-то было бы.

    тогда и спорить не о чем. настройки должны храниться в CSIDL_COMMON_APPDATA (или же в аналоге для каждого пользователя отдельно), в win9x можно хранить либо в папке с программой, либо в "Мои документы".
  • Добежал (19.12.08 15:30) [35]
    народ, а почему многие игры хранят свой файлы именно в "Мои документы", а не в Application Data?
  • DVM © (19.12.08 15:36) [36]

    > Добежал   (19.12.08 15:13) [33]


    > по-моему, данная рекомендация - бред.

    Ты не понял. Я хотел сказать, что если уж приложение может запускаться и как сервис и как обычное приложение, то пусть оно запускается как сервис в WinNT (и только так!) и как обычная программа в Win9x. Логично ведь?
  • DVM © (19.12.08 15:38) [37]

    > Добежал   (19.12.08 15:30) [35]


    > народ, а почему многие игры хранят свой файлы именно в "Мои
    > документы", а не в Application Data?

    Потому что многие геймеры очень хотят таскать сои настройки с компа на комп, а   заморачивать себе голову всякими Application Data не хотят.
  • Anatoly Podgoretsky © (19.12.08 15:43) [38]
    > Добежал  (19.12.2008 13:32:27)  [27]

    Я уже несколько раз сказал, не надо пользователю знать о каких либо файлах, а ты этого понять не можешь.
  • Anatoly Podgoretsky © (19.12.08 15:47) [39]
    > Eraser  (19.12.2008 14:50:32)  [32]

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