Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
ВнизПолитика NT - хранить настройки программы отдельно от программы Найти похожие ветки
← →
Добежал (2008-12-18 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 - аксиома. Я перечислил свое видение достоинств и недостатков каждого способа. Давайте обсудим.
← →
Добежал (2008-12-18 17:17) [1]P.S.S. Параллельно вопросик, сейчас проверять просто неудобно, а вопрос сформировался - какой путь хранения настроек выдаст NT-система, когда об этом запрашивает сервис? Для юзверей-сеансов она выдает в "Application Data" насколько я помню, а для сервиса?!
← →
Anatoly Podgoretsky © (2008-12-18 17:28) [2]> Добежал (18.12.2008 17:17:00) [0]
Зачем пользователю знать где каждая программа хранит свои настройки? Как правило это неизвестно, а ты почему то хочешь пользователей нагрузить этим.
← →
Anatoly Podgoretsky © (2008-12-18 17:31) [3]> Добежал (18.12.2008 17:17:01) [1]
Нет такой папки, а есть папка в профиле одного из пользователей. Службы тоже не запускаются сами по себе, а от какого пользователя. Есть пользователь "All Users"
← →
Добежал (2008-12-18 17:40) [4]
> Службы тоже не запускаются сами по себе, а от какого пользователя
согласен. Но для каждого пользователя в том же "Document and settings" есть своя папка.
А какая папка будет у учетной записи SYSTEM?
> Зачем пользователю знать где каждая программа хранит свои
> настройки?
я данный вопрос заблаговременно объяснил в топике. Читаем внимательнее.
← →
Городской Шаман (2008-12-18 17:41) [5]
> Добежал (18.12.08 17:17)
Для сервиса пофигу. Он пишет куда хочет, так как запускается с акканута local system.
Более правильно было бы - отдельно сервис, отдельно GUI. Сервис пишет куда привык, GUI в настройки определённого пользователя.
← →
clickmaker © (2008-12-18 17:49) [6]> какой путь хранения настроек выдаст NT-система, когда об
> этом запрашивает сервис?
C:\Documents and Settings\LocalService
C:\Documents and Settings\NetworkService
← →
Добежал (2008-12-18 17:50) [7]понимаю, пост большой, сразу все запомнить сложно. Я тогда буду отвечать на замечания цитатами из поста, если позволите.
> Для сервиса пофигу. Он пишет куда хочет, так как запускается
> с акканута local system
...
> хотя в подавляющем большинстве случаев программа запускается
> как сервис, но, конечно, нужно и предусмотреть возможность
> запускаться в виде GUI-приложения (поддерживается и совместимость
> с win9x
то есть, программу можно запустить из под пользовательского сеанса, такая возможность есть.
Если ты предлагаешь при запуске из под пользователя писать в Application Data, а при запуске как сервиса писать в каталог с программной - это еще хуже, запутает вообще всех. Что я напишу в FAQ?Q: где программа хранит настройки?
A: если программа запущена в виде сервиса, то хранит...
Да пользователи с ума сойдут. А еще остается win9x!!! Не не не...
← →
Добежал (2008-12-18 17:51) [8]
> clickmaker © (18.12.08 17:49) [6]
> > какой путь хранения настроек выдаст NT-система, когда
> об
> > этом запрашивает сервис?
>
> C:\Documents and Settings\LocalService
> C:\Documents and Settings\NetworkService
угу, спасибо. Где-то так и думал.
← →
Добежал (2008-12-18 17:52) [9]
> Более правильно было бы - отдельно сервис, отдельно GUI
так и есть. Независимо от того, как запущена сервер - в виде сервиса или из под пользователя - управляется он через WEB.
← →
Добежал (2008-12-18 18:08) [10]а есть какая-то константа, которая вернет путь по которому можно сохранить настройки для ВСЕХ пользователей? Должна же быть...
И куда она будет указывать на w2k / XP / Vista?
← →
Anatoly Podgoretsky © (2008-12-18 18:13) [11]> Добежал (18.12.2008 17:40:04) [4]
LocalService/NetworlService
А то, что ты объяснил ничего не значит, внимательно прочитай и подумай "Зачем пользователю знать где каждая программа хранит свои настройки?"
У тебя просто неверное интерфейсное решение.
← →
Anatoly Podgoretsky © (2008-12-18 18:18) [12]> Добежал (18.12.2008 17:51:08) [8]
Это условный путь, ОС не стоят на месте. Правильно запрашивать у ОС. Например Виста сильно отличается от ХР
← →
clickmaker © (2008-12-18 18:24) [13]> а есть какая-то константа, которая вернет путь по которому
> можно сохранить настройки для ВСЕХ пользователей?
CSIDL_COMMON_APPDATA
← →
Добежал (2008-12-18 18:26) [14]
> CSIDL_COMMON_APPDATA
спасибо! Ээээ... Если знаешь, скажи еще, пожалуйста, а в w2k / XP / Vista куда будет этот путь указывать?
← →
clickmaker © (2008-12-18 18:45) [15]> w2k / XP / Vista куда будет этот путь указывать?
если нужна совместимость со всеми ОС, не стоит забиваться на конкретный путь.
вчера он в w2k - C:\Documents and Settings\All Users, сегодня в висте - C:\Users\All Users, а завтра МС его еще куда-нибудь забубенит
← →
Добежал (2008-12-18 18:46) [16]Еще, кстати, вопросик - при запуске некоторых программ Vista выдает сообщение, что мол этой программе нужны админские полномочия и бла бла бла (UAC):
http://s61.radikal.ru/i173/0812/33/7cd10e550fcd.jpg
(зеркало): http://pic.ipicture.ru/uploads/081218/TNPVYhMIRu.jpg
По каким признакам Vista определяет это? На одной из прог она это выдает, на другой нет...
Как сделать так, чтобы она выдавала это окно на нужной программе? Какую-то функцию экспортировать в исходниках, какой-то флаг поставить или как?
← →
Добежал (2008-12-18 18:48) [17]
> если нужна совместимость
ага, спасибо, clickmaker!
P.S. Да я и не забиваюсь, просто интересно, конечно конкретный путь через shell будет вытаскиваться.
P.S.S. Товарищи, кто что скажут по сабжу, какие мысли?
← →
Anatoly Podgoretsky © (2008-12-18 19:10) [18]> clickmaker (18.12.2008 18:45:15) [15]
Не стоит на это закладываться даже в рамках одной ОС
← →
Anatoly Podgoretsky © (2008-12-18 19:11) [19]> Добежал (18.12.2008 18:46:16) [16]
Не лезь куда не положено.
← →
iZEN (2008-12-18 20:06) [20]Я так скажу, не заморачиваясь заморочками Windows.
FreeBSD хранит настройки программ и левых сервисов в каталоге /usr/local/etc/.
Пользовательские настройки обычно хранятся в домашнем каталоге пользователя (~/ в Unix, аналог %USERPROFILE%\ в Windows) в dot-формате — точка перед именем файла или каталога — они оказываются скрыты от глаз и не замусоривают восприятие домашнего каталога.
Каталог %APPDATA% Windows не имеет аналогов в Unix, так как находится в подкаталоге профиля пользователя, в котором пользователь может делать что захочет. То есть структура нерегламентирована.
← →
DVM © (2008-12-18 21:10) [21]
> Добежал (18.12.08 18:46) [16]
> По каким признакам Vista определяет это? На одной из прог
> она это выдает, на другой нет...
Манифест в ресурсах программы должен быть особенный.
Для инсталляторов она еще по другим признакам определяет.
← →
DVM © (2008-12-18 21:11) [22]
> P.S.S. Товарищи, кто что скажут по сабжу, какие мысли?
а что еще надо то? Хранить в CSIDL_COMMON_APPDATA и всего делов.
← →
Пробегал2.... (2008-12-18 21:37) [23]DVM © (18.12.08 21:10) [21]
Манифест в ресурсах программы должен быть особенный
можно поподробнее?
Никаким манифестом я не заморачивался, но на одной из прог почему-то Vista выдает это окошко. Хотя это обычная дельфовая прога, никаких ухищрений я не делал.
← →
DVM © (2008-12-18 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 © (2008-12-18 22:31) [25]
> Можно просто положить рядом с файлом имя_файла_программы.
> exe.manifest
Хотя нет, надо обязательно в ресурс.
← →
DVM © (2008-12-18 22:34) [26]
> Пробегал2.... (18.12.08 21:37) [23]
во:
http://download.microsoft.com/download/5/6/a/56a0ed11-e073-42f9-932b-38acd478f46d/WindowsVistaUACDevReqs.doc
← →
Добежал (2008-12-19 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 © (2008-12-19 13:43) [28]Хранить где положено, пользователю дать кнопочку "Выслать файл настроек"
← →
Добежал (2008-12-19 13:44) [29]да, тоже сейчас склоняюсь к этому варианту. Тем более, сервер управляется через WEB, сделать ссылочку "экспорт файла настроек", который приведет к запросу о загрузке файла. И "импорт" там же...
← →
-SeM- (2008-12-19 13:45) [30]
> пользователи часто присылают нам файл настроек, описывают
> ситуацию, мы настраиваем под них и отсылаем файл настроек
> обратно
импорт/экспорт файла настроек? не заморачиваясь где на самом деле он находится в конкретной ОС
← →
DVM © (2008-12-19 14:22) [31]
> Добежал (19.12.08 13:32) [27]
> Не вижу пока варианта, кроме как ставить программу не в
> Program Files... бред какой-то...
А все потому, что неверно продумано приложение. Не следует делать по, которое одновременно может запускаться как сервис и как обычное приложение. Либо так либо сяк. Проблемы бы не было.
Если же хотите поддерживать совместимость с Win9x то просто не давайте программе запускаться не как сервис под WinNT. А под Win9x она пусть хранит свои настройки где хочет, хоть в папке с программой, под WinNT - там где положено.
← →
Eraser © (2008-12-19 14:50) [32]> [0] Добежал (18.12.08 17:17)
а вы пробовали запускать ваше приложение в XP, но не с правами админа, как успехи?
по-моему самый простой и надежный вариант - хранить настройки там же, но, как тут уже писали, добавить манифест, который будет при запуске запрашивать права админа + сделать проверку прав при запусе внутри программы - если пользователь не админ, то показывать предупреждение и закрывать программу.
← →
Добежал (2008-12-19 15:13) [33]
> Не следует делать по, которое одновременно может запускаться
> как сервис и как обычное приложение
по-моему, данная рекомендация - бред.
Программе по смыслу работы права администратора не нужны. Требовать права администратора только для того, чтобы уметь хранить настройки в каталоге с программой - как-то не феншуйно.
> а вы пробовали запускать ваше приложение в XP, но не с правами
> админа, как успехи?
нормально успехи. Под продвинутым пользователем можно, ему разрешена запись в Program Files.
> добавить манифест, который будет при запуске запрашивать
> права админа + сделать проверку прав при запусе внутри программы
>
ну да, такое решение я уже выше обсуждал... Ну неплохо, конечно, окромя одного - программе по сути админские права не нужны. Это все равно что IE бы для работы просил права админа. Нелогично как-то было бы.
← →
Eraser © (2008-12-19 15:15) [34]> [33] Добежал (19.12.08 15:13)
> ну да, такое решение я уже выше обсуждал... Ну неплохо,
> конечно, окромя одного - программе по сути админские права
> не нужны. Это все равно что IE бы для работы просил права
> админа. Нелогично как-то было бы.
тогда и спорить не о чем. настройки должны храниться в CSIDL_COMMON_APPDATA (или же в аналоге для каждого пользователя отдельно), в win9x можно хранить либо в папке с программой, либо в "Мои документы".
← →
Добежал (2008-12-19 15:30) [35]народ, а почему многие игры хранят свой файлы именно в "Мои документы", а не в Application Data?
← →
DVM © (2008-12-19 15:36) [36]
> Добежал (19.12.08 15:13) [33]
> по-моему, данная рекомендация - бред.
Ты не понял. Я хотел сказать, что если уж приложение может запускаться и как сервис и как обычное приложение, то пусть оно запускается как сервис в WinNT (и только так!) и как обычная программа в Win9x. Логично ведь?
← →
DVM © (2008-12-19 15:38) [37]
> Добежал (19.12.08 15:30) [35]
> народ, а почему многие игры хранят свой файлы именно в "Мои
> документы", а не в Application Data?
Потому что многие геймеры очень хотят таскать сои настройки с компа на комп, а заморачивать себе голову всякими Application Data не хотят.
← →
Anatoly Podgoretsky © (2008-12-19 15:43) [38]> Добежал (19.12.2008 13:32:27) [27]
Я уже несколько раз сказал, не надо пользователю знать о каких либо файлах, а ты этого понять не можешь.
← →
Anatoly Podgoretsky © (2008-12-19 15:47) [39]> Eraser (19.12.2008 14:50:32) [32]
Манифест обязателен, иначе нарвется еще и на виртуализацию.
← →
Anatoly Podgoretsky © (2008-12-19 15:48) [40]> Добежал (19.12.2008 15:30:35) [35]
Знаний не хватило. Я участвовал в обсуждение аналогичной темы в SWRUS и там уровень знаний был виден очень четко. У кого он ниже те так и поступали.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.006 c