|
Помогите с общим пониманием архитектуры программы, многопользовательская среда.
|
|||
---|---|---|---|
#18+
Просто не хочу потом иметь кучу вопросов, и объяснять каждому у кого что-то не так кривые затычные методы и затыкать дыры администратором, тайными установками разрешений для папок, обходами UAC через планировщики задач и т.п. (это по опыту уже существующего приложения) Хочу сразу сделать "нормально". Приложение по своей сути не требует администратора. Приложение вроде как не хочу делать сервисом (взаимодействие с пользователем). Приложение должно быть совместимо с Vista/Win7 и т.п. Потенциально скользкие вопросы следующие: 1. Приложение сохраняет НАСТРОЙКИ в реестре . Обычно использую: HKEY_CURRENT_USER\Software\Proga Но: насройки сохраненные под Current User разные для разных юзеров. Насколько я вижу, приложения обычно сораняют их в HKEY_LOCAL_MACHINE\SOFTWARE\Proga Но: как эти настройки тогда менять, если Current User не есть Admin? Как правильно делать? 2. Приложение работает с ДАННЫМИ : база данных, временные текстовухи, логи, картинки, дополнительные настройки, кот. по каким-то причинам не хочу хранить в реестре и т.п. Прога по умолчанию устанавливается в C:\Program Files\Proga По опыту предыдущей проги, все это хозяйство копошится в папках вида C:\Program Files\Proga C:\Program Files\Proga\SubFolders Но (что касается Vista/Win7 и им подобных): если не хитрить с правами на папки \Proga \Proga\SubFolders, возникают проблемы с записью файлов, а если прога пытается прочитать данные, то она их в упор может не видеть (краем глаза читал про виртуализацию папок типа Program Files и т.п.), на существующей проге прописывал требование "Admin" и абсолютные права на эти папки. Но это думаю не правильно. Есть предположение, что на "Вистах" надо хранить данные в C:\ProgramData\Proga C:\ProgramData\Proga\SubFolders Или? C:\Users\USER\AppData\Local\Proga ??? Или еще где? Короче не понимаю. Как бы внести ясность? 3. Приложение создает программную группу в меню, ярлык на Рабочий стол и т.п. : Я использую Smart Install Maker в качестве инсталлятора. Он при установке норовит запуститься от админа (думаю так) и лепит все эти ярлыки только для Current User, а если потом перегрузиться в другую учетку, то там пусто. Как решать? Еще на Вистах много говорится про всякие Invoker, манифесты и т.п. Короче поделитесь опытом, как правильно сделать структуру/реализацию XP/Vista/Win7 совместимой проги? А то все это вызывает нестабильное состояние и начинаю просто беситься. А начну счас ляпать "как умею" пусть даже с хитростями, будет такой же бардак как и был. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2012, 19:57 |
|
Помогите с общим пониманием архитектуры программы, многопользовательская среда.
|
|||
---|---|---|---|
#18+
Ну, пока допер до следующего: 1. Дмитрий77Но (что касается Vista/Win7 и им подобных): если не хитрить с правами на папки \Proga \Proga\SubFolders, возникают проблемы с записью файлов, а если прога пытается прочитать данные, то она их в упор может не видеть (краем глаза читал про виртуализацию папок типа Program Files и т.п.), ... Еще на Вистах много говорится про всякие Invoker, манифесты и т.п. Надо снабдить exe-шник таким манифестом, чтоб 1) поддерживал стили (что обычно и так делал) 2) сообщал вистам что он Invoker, это оставляет тек. права, но при этом запрещает вистам наеб... заниматься виртуализацией папок типа Program Files к кот. смертному юзеру путь закрыт; пусть лучше сразу ругается а не задуривает 3) не мешал запускаться на XP asm.v2 (а не v.3) Вроде такой вариант рабочий: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
2.Дмитрий77 Приложение работает с ДАННЫМИ : база данных, временные текстовухи, логи, картинки, дополнительные настройки, кот. по каким-то причинам не хочу хранить в реестре и т.п. Прога по умолчанию устанавливается в C:\Program Files\Proga По опыту предыдущей проги, все это хозяйство копошится в папках вида C:\Program Files\Proga C:\Program Files\Proga\SubFolders. Думаю, надо тупо при инсталляции (Администратором) создавать папку: %CommonAppData%\Proga и все "хозяйство" кидать в нее и в %CommonAppData%\Proga\SubFolders и туда же лазить в процессе работы. %CommonAppData% легко вычисляется через API Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
и дает C:\Documents and Settings\All Users\Application Data 'XP C:\ProgramData 'Vista/Win7 На папку с данными %CommonAppData%\Proga\ надо установить полный доступ всем кому попало на все действия. Можно сделать Администратором при установке приложения: Код: vbnet 1. 2. 3. 4. 5.
3.Дмитрий77[HKEY_CURRENT_USER\Software\Proga Но: насройки сохраненные под Current User разные для разных юзеров. Насколько я вижу, приложения обычно сораняют их в HKEY_LOCAL_MACHINE\SOFTWARE\Proga Но: как эти настройки тогда менять, если Current User не есть Admin? Как правильно делать?. Ну, в HKEY_LOCAL_MACHINE смертного юзера не пустят. Самое простое что приходит в голову (если хочу чтоб были одинаковые настройки и всякий юзер мог их менять), это вообще отказаться от реестра и хранить настройки в %CommonAppData%\Proga (с установленным полным доступом для "Users") в текстовухе settings.ini (какие-то непринципиальные настройки не влияющие на работу приложения типа размер формы/ширина столбцов можно думаю и в HKEY_CURRENT_USER) Как то так. Поправьте если что не так сказал. ===== Как создавать ярлыки "для всех пользователей" пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2012, 07:35 |
|
Помогите с общим пониманием архитектуры программы, многопользовательская среда.
|
|||
---|---|---|---|
#18+
Я не все читал что ты написал. Организацию сохранения настроек и чтения я делал своим таким самодельным методом, который теперь подключаю к любому проэкту Например, есть форма. В ней куча всяких элементов. После нажатия на кнопку "Сохранить" вызываю Код: vbnet 1.
Модуль Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Потом что-то вроде как доделывал. Кажись это посвежей Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
Где-то должно быть тоже самое но все настройки сохраняет в базу даных Access, тоже для нескольких пользователей расчитывал Не лучший сорт, но лучше чем читать из файла open for ... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 06:08 |
|
Помогите с общим пониманием архитектуры программы, многопользовательская среда.
|
|||
---|---|---|---|
#18+
Снова я поспешил, не то ответил( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 06:12 |
|
Помогите с общим пониманием архитектуры программы, многопользовательская среда.
|
|||
---|---|---|---|
#18+
Андрей159, Конечно не то. Вопрос был по общим принципам а не по тому где сохранять - в реестре или текстовухе. Или думаете я в ( ТОКО вот чего лучше использовать???Local/current) \Software\Proga не умею сохранять? Для новой проги я решил использовать ini-файл через стандартные API по работе с ним Работа с ini-файлами. GetPrivateProfileString. WritePrivateProfileString. Хорош ли подход? Да плевать что технология "устаревшая", гораздо удобнее. Бояться что эти API отменят? Не отменят. Уже сделал большой кусок и мне понравилось. А ini файл класть в %CommonAppData%\Proga c установкой безлимитных прав доступа на эту папку при инсталляции. По хорошему надо бы при установке сделать 2 варианта 1) %CommonAppData%\Proga -для всех пользователей 2) %<user>AppData%\Proga -для каждого юзера свои Возникла еще мысль что на отдельную ветку HKEY_LOCAL_MACHINE\SOFTWARE\Proga тоже ведь можно назначить "безлимитный доступ" (по крайней мере ручками это делается). Но чего-то поздно возникла, нормальная работа с ini через API уже полюбилась. Т.е. хочу сказать, что сохранять в реестре, ini или просто текстовухе это дело 10-е, вопрос "куда ложить". У меня из-за отсутствия понимания этого в предыдущей проге бардак и злоупотребление администратором (хотя и сходит с рук в большинстве случаев). Но просто никогда не знаешь скольких клиентов потерял из-за ляпов такого рода. Полагаю все же, что не все в реальном мире администраторы как я на своих 3-х компах. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 13:59 |
|
|
start [/forum/topic.php?fid=60&fpage=68&tid=2157377]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
others: | 297ms |
total: | 456ms |
0 / 0 |