Как хранить настройки программ


Содержание

Как сохранить настройки приложения в приложении Windows Forms?

То, что я хочу достичь, очень просто: у меня есть приложение Windows Forms (.NET 3.5), которое использует путь для чтения информации. Этот путь может быть изменен пользователем, используя форму, которую я предоставляю.

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

Я понимаю, что доступны три варианта:

  • Файл ConfigurationSettings (appname.exe.config)
  • Реестр
  • Пользовательский файл XML

Я читал, что конфигурационный файл .NET не предусмотрен для сохранения значений. Что касается реестра, я хотел бы получить как можно дальше от него.

Означает ли это, что я должен использовать собственный файл XML для сохранения настроек конфигурации? Если это так, я хотел бы увидеть пример кода (С#).

Я видел другие дискуссии по этому вопросу, но мне все еще не ясно.

Если вы работаете с Visual Studio, довольно легко получить устойчивые настройки. Щелкните правой кнопкой мыши по проекту в обозревателе решений, выберите «Свойства». Перейдите на вкладку «Настройки», нажмите гиперссылку, если настройки не существуют. Используйте вкладку «Настройки», чтобы создать настройки приложения. Visual Studio создает файлы Settings.settings и Settings.Designer.settings , которые содержат одноэлементный класс Settings , унаследованный от ApplicationSettingsBase. Вы можете получить доступ к этому классу из своего кода для чтения/записи настроек приложения:

Этот метод применим как для консоли, так и для Windows Forms и других типов проектов.

Обратите внимание, что вам необходимо установить свойство области ваших настроек. Если вы выберете область приложения, то Settings.Default. будет доступно только для чтения.

Если вы планируете сохранить файл в том же каталоге, что и ваш исполняемый файл, вот хорошее решение, которое использует формат JSON

Реестр не работает. Вы не уверены, имеет ли пользователь, который использует ваше приложение, достаточные права на запись в реестр.

Вы можете использовать файл app.config для сохранения настроек уровня приложения (одинаковых для каждого пользователя, использующего ваше приложение).

Я бы сохранил пользовательские настройки в файле XML, который будет сохранен в изолированное хранилище или в каталог SpecialFolder.ApplicationData.

Рядом с этим, как и с .NET 2.0, можно сохранить значения обратно в файл app.config .

Класс ApplicationSettings не поддерживает сохранение настроек в файле app.config. Это очень по дизайну приложения, которые работают с правильно защищенной учетной записью пользователя (думаю, Vista UAC), не имеют права на запись в папку установки программы.

Вы можете сражаться с системой с классом ConfigurationManager . Но тривиальное обходное решение заключается в том, чтобы войти в конструктор настроек и изменить область настройки для пользователя. Если это вызывает трудности (скажем, настройка относится к каждому пользователю), вы должны поместить функцию «Параметры» в отдельную программу, чтобы вы могли запросить приглашение на повышение привилегий. Или не используйте настройку.

Я хотел поделиться библиотекой, которую я построил для этого. Это крошечная библиотека, но большое улучшение (IMHO) по сравнению с файлами .settings.

Библиотека называется Jot (GitHub), вот старая статья The Code Project, которую я написал об этом.

Вот как вы можете использовать его для отслеживания размера и местоположения окна:

Преимущество по сравнению с файлами .settings: кода значительно меньше, и он намного менее подвержен ошибкам, поскольку вам нужно упомянуть каждое свойство только один раз.

В файлах настроек вам нужно упоминать каждое свойство пять раз: один раз, когда вы явно создаете свойство, и еще четыре раза в коде, который копирует значения туда и обратно.

Хранение, сериализация и т.д. Полностью настраиваются. Когда целевые объекты создаются контейнером IOC, вы можете [подключить его] [], чтобы он автоматически применял отслеживание ко всем объектам, которые он разрешает, и все, что вам нужно сделать, чтобы сделать свойство постоянным, — добавить атрибут [Trackable] в теме.

Он легко настраивается, вы можете настроить: — когда данные сохраняются и применяются глобально или для каждого отслеживаемого объекта — как они сериализуются — где они хранятся (например, файл, база данных, онлайн, изолированное хранилище, реестр) — правила, которые могут отменить применение/сохранение данные для свойства

Как и куда сохранить настройки

Есть форма, в которой заполняются настройки программы.
На этой же форме есть выпадающий список, в котором хранятся разные конфигурации этих настроек. Как сохранить несколько конфигураций и загружать их, если пользователь выберет определённые.

Я знаю о существовании iniFiles. Использовать несколько штук этих файлов? Может быть какой-то класс нужен?


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

2. Если INI-файл хранить в папке с программой, то при переносе папки на другой компьютер настройки сохраняются. (Я еще не написал ни одной программы, которая бы не поместилась на одну дискету

3. Новичку в реестре можно запросто запутаться или (боже упаси), чего-нибудь не то изменить.

Поэтому для хранения параметров настройки программы удобно использовать стандартные INI файлы Windows. Работа с INI файлами ведется при помощи объекта TIniFiles модуля IniFiles. Краткое описание методов объекта TIniFiles дано ниже.

Create(‘d:\test.INI’);
Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации.

WriteBool(const Section, Ident: string; Value: Boolean);
Присвоить элементу с именем Ident раздела Section значение типа boolean

WriteInteger(const Section, Ident: string; Value: Longint);
Присвоить элементу с именем Ident раздела Section значение типа Longint

WriteString(const Section, Ident, Value: string);
Присвоить элементу с именем Ident раздела Section значение типа String

ReadSection (const Section: string; Strings: TStrings);
Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются)

ReadSectionValues(const Section: string; Strings: TStrings);
Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат : имя_переменной = значение

EraseSection(const Section: string);
Удалить раздел Section со всем содержимым

ReadBool(const Section, Ident: string; Default: Boolean): Boolean;
Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.

ReadInteger(const Section, Ident: string; Default: Longint): Longint;
Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.

ReadString(const Section, Ident, Default: string): string;
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.

Free;
Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом

Property Values[const Name: string]: string;
Доступ к существующему параметру по имени Name

Единственное замечание, INI файлы имеют ограничение на размер файла в 64 Kb.

Пример с комбобоксом (в нём названия конфигураций)

Как хранить настройки программ

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

Сегодня я Вам расскажу как сохранять настройки в XML файл, а не через стандартные средства C#. Почему через XML? Чтобы программа была переносимой без различного «геморроя».

И так приступим.

1. Для начала нам потребуется создать проект WinForms.

2. Добавим в проект новый класс под именем Props и напишем следующий код:

Теперь чтоб использовать класс для сохранения настроек сделаем следующие: 1. Расположим на форме две кнопки (Button) одна для записи настроек, а другая для чтения, один checkBox — автозагрузка приложения и comboBox — так просто:)

2. Пишем код для записи настроек и компонентов

Если что то непонятно пишите в комментариях!

LiveInternetLiveInternet

Метки


Цитатник

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

Дизайнерам на заметку: Генератор цветовых схем ColorSchemeDesigner C помощью да.

tubes маски для творения Masks ____________ тексты-стихи. Текстов .

Corel PaintShop Pro X9 Ultimate 19.0.2.4 RePack by KpoJIuK + Content Pack Версия програм.

Фотографы, которые знают, как использовать тени Тени — блестящий способ создавать ярки.

Рубрики

  • ВСЁ ДЛЯ ФОТОШОП (258)
  • УРОКИ фотошоп (101)
  • КАРТИНКИ,ФОТО,ОБОИ (50)
  • КЛИПАРТ И СКРАП-НАБОРЫ (41)
  • АЗЫ и ПОЛЕЗНЫЕ МЕЛОЧИ для фотошоп (28)
  • ФОНЫ,ПАТТЕРНЫ,ТЕКСТУРЫ (23)
  • ПЛАГИНЫ и ФИЛЬТРЫ (19)
  • Кисти (11)
  • НОВОГОДНЕЕ (8)
  • ШАБЛОНЫ и ТРАФАРЕТЫ (6)
  • РАМКИ ДЛЯ ФОТОШОП (6)
  • МАСКИ для фотошоп (5)
  • Скачать Adobe Photoshop (3)
  • Стили (3)
  • ДЕКОР — элементы,украшалочки,завитки (2)
  • Экшены (2)
  • Клипарт — части тела (1)
  • ОФОРМЛЕНИЕ И ВЕДЕНИЕ БЛОГА (99)
  • УРОКИ по оформлению и ведению дневника (33)
  • РАМКИ ДЛЯ ЗАПИСЕЙ (27)

  • HTML-обучение (20)
  • МОИ РАМКИ (14)
  • ДЕЛАЕМ РАМКИ (13)
  • ДЛЯ КОММЕНТАРИЕВ (7)
  • РАЗДЕЛИТЕЛИ (6)
  • Палитра цветов (4)
  • СХЕМЫ оформления дневника (4)
  • Музыка в дневник — уроки и советы (3)
  • ДОМАШНЯЯ СОКРОВИЩНИЦА,ВСЁ ДЛЯ ДОМА (80)
  • КУЛИНАРНЫЕ ПРЕМУДРОСТИ (30)
  • ДАЧНЫЙ УЧАСТОК (20)
  • ДИЗАЙН ЖИЛИЩ,ИНТЕРЬЕРЫ (18)
  • ОГОРОД БЕЗ ХЛОПОТ (16)
  • Полезные советы (11)
  • ОЧ.УМЕЛЫЕ РУЧКИ (5)
  • РЕМОНТ в доме (3)
  • КОНСЕРВАЦИЯ И СОЛЕНЬЯ (1)
  • ПРОГРАММЫ (49)
  • ЭТО ИНТЕРЕСНО (44)
  • ГАДАНИЯ,ТЕСТЫ (8)
  • Ссылки на сайты (6)
  • Фэн-шуй (3)
  • Приметы и суеверия (2)
  • ПОРТУГАЛИЯ глазами очевидца (1)
  • КОРЕЛ — Corel Paint Shop Pro (43)
  • КОРЕЛ — скачать,комплектовать,АЗЫ (22)
  • МОИ работы в корел со ссылкой на урок (15)
  • УРОКИ для Corel Paint Shop Pro (12)
  • УРОКИ работы в разных программах (38)

  • FLASH-МАСТЕРСКАЯ- Всё о флэш (8)
  • Adobe Flash CS6 (4)
  • ФРАКТАЛЫ (2)
  • КОМПЬЮТЕР-всё о нём и для него (35)
  • ИСКУССТВО (34)
  • Живопись (6)
  • Народные мастера (2)
  • Росписи (2)
  • ВРЕМЕНА ГОДА (29)
  • Весна (10)
  • Осень (9)
  • Зима (7)
  • Лето (1)
  • НОВЫЙ ГОД (26)
  • КОЛЛЕКЦИИ ССЫЛОК (26)
  • ЗДОРОВЬЕ (25)
  • СТРОЙНАЯ ФИГУРА (10)
  • ДИЕТЫ (4)
  • МУЗЫКА (19)
  • ФОТОХУДОЖНИКИ (17)
  • МОИ РАБОТЫ ФШ (16)
  • ФОТОДЕЛО (12)
  • ГЕНЕРАТОРЫ ОНЛАЙН (10)
  • ЮМОР,ПРИКОЛЫ (10)
  • ЗАРАБОТОК в интернете (10)
  • ПОЛЕЗНЫЕ СОВЕТЫ ПО РАБОТЕ В СЕТИ (8)
  • РЕЛИГИЯ (8)
  • ПРАЗДНИКИ религиозные (7)
  • Кулинарные рецепты к праздникам и постам (1)

  • Детям о Боге (1)
  • МОИ УРОКИ (8)
  • ДЛЯ ДЕТЕЙ (8)
  • Раскраски и трафареты для творчества (1)
  • Развитие речи дошкольников (1)
  • АНИМАЦИИ (7)
  • ЖИВОТНЫЙ МИР-ОТРАЖЕНИЕ НАШИХ ДУШ (5)
  • Животные в искусстве (3)
  • Истории жизни животных (1)
  • Животные глазами фотографов (1)
  • СТИХИ (5)
  • ШРИФТЫ,НАДПИСИ (4)
  • ПСИХОЛОГИЯ — секреты внутреннего мира (3)
  • Аватарки (3)
  • МОДА,КРАСОТА,СТИЛЬ (3)
  • Одежда,мода,секреты (2)
  • Причёски (1)
  • АНГЛИЙСКИЙ ЯЗЫК (3)
  • Adobe Illustrator — графический редактор (2)
  • азы и полезные советы по Adobe Illustrator (2)
  • КНИГИ (2)
  • РАЗВЛЕЧЕНИЯ,ДОСУГ,ИГРЫ (1)
  • Я И МОЯ СЕМЬЯ (1)
  • ДЛЯ РОДИТЕЛЕЙ О ВОСПИТАНИИ И РАЗВИТИИ ДЕТЕЙ (1)
  • МУДРЫЕ МЫСЛИ (0)

Ссылки

Резюме


Бабец Надежда

Новости

Музыка

Поиск по дневнику

Подписка по e-mail

Интересы

Друзья

Постоянные читатели

Сообщества

Статистика

Как сохранить программы при смене системы в компьютере.

Четверг, 22 Марта 2012 г. 06:47 + в цитатник

Как сохранить программы для переноса

Как сохранить свое программное окружение без каких – либо изменений в
случае перестановки операционной системы или перенести программу с
компьютера на компьютер? Переустанавливать настраивать все заново –
долго, сохранять все вручную – тоже не очень заманчивая перспектива. И
все – таки как? Предлагаю Вам ознакомится с замечательной программой
Pick Me App, позволяющей заархивировать и перенести программу с
компьютера на компьютер быстро и со всеми вашими пользовательскими
настройками.

Если верить разработчикам, то данная
программа способна перенести все пользовательские данные с компьютера на
компьютер практически у 100 % современного программного обеспечения.
(По крайней мере все основные программы типа skype, the bat, outlook и
т.д. программа воспринимает без проблем). Также предусмотрена функция
переноса программ даже между разными версиями операционных систем.

Работать с программой Pick Me App очень просто. Скачиваем дистрибутив
программы, запускаем и видим перед собой окно интерфейса программы.
Данное окно разбито на две части: слева мы видим каталог всех программ,
установленных на нашем ПК, а справа окошечко, показывающее программы,
готовые для переноса. Для того, чтобы перенести программу с компьютера
на компьютер нам необходимо отметить в левом окошечке требуемую
программу, нажать среднюю (расположена посередине окна) кнопку. И ждем. В
зависимости от объема программы процесс переноса может занять
достаточно длительное время. После обработки получаем программу,
запакованную в TAP архив, который сохранится в папке программы Pick Me
App

С тем, как подготовить файлы наших программ для переноса мы
ознакомились. Теперь давайте узнаем, как их перенести на другой
компьютер. Устанавливаем дистрибутив программы на тот, компьютер на
который хотим перенести наши файлы, запускаем и отмечаем галочками те
программы, которые нужно восстановить. Опять ждем, пока Pick Me App
выполнит необходимые действия и видим, что наши программы установились в
новой системе в точно таком же виде как и на первом компьютере, причем
все настройки пользовательских данных будут сохранены в точности, без
каких – либо изменений.

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

Спектр применения программы Pick Me App достаточно широк. Она может
пригодится в том случае, если пользователь приобрел новый компьютер (или
переустановил систему) и желает перенести программу с компьютера на
компьютер с сохранением всех пользовательских настроек или же
пользователь использует какой – либо софт с достаточно сложными
настройками интерфейса. Также перенести программу с компьютера на
компьютер бывает нужно системным администраторам, которые устанавливают
одинаковые программы бессчётное число раз.

Программа Pick Me App может пригодиться вам в том случае, если
понадобится перенести программное обеспечение при переустановке системы
или покупке нового компьютера. Может заинтересовать эта утилита и
системных администраторов, которым приходится устанавливать один и тот
же софт на множество компьютеров, а потом производить одинаковые
настройки. И уж просто незаменимым будет этот инструмент для тех людей,
которые используют какое-либо эксклюзивное или раритетное ПО, к которому
и инсталляторов-то не найдешь.

Вопрос о том, как быстро перенести программу с компьютера на
компьютер остается актуальным даже в эпоху онлайн сервисов. Так что
используйте Pick Me App и переносите программы быстро и качественно.

Илон Маск рекомендует:  Семантическая верстка понятие и примеры семантического кода

для скачивания, нужна регистрация на сайте, они пришлют вам пароль.Я попробую вставить программу архивом. Запускаем программу,в левой стороне появятся установленные программы, клик по программе и жмем кнопку CAPTURED. все программа пошла сохраняться. обратите внимание -где!

Как хранить настройки программ

Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Форум программистов > C++ > C++ Builder
Где лучше хранить настройки программы
Регистрация
Поиск по форуму
Расширенный поиск
К странице.

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда — alarforum@yandex.ru


Куда лучше писать настройки программы —

помогите определится. Который из этих вариантов лучше.

07.06.2012, 17:52 #1

Куда лучше писать настройки программы —

помогите определится. Который из этих вариантов лучше.

07.06.2012, 18:02 #2
09.06.2012, 09:48 #3

Куда лучше писать настройки программы —

помогите определится. Который из этих вариантов лучше.

Ни в коем случае не в ini
это крайне отстойный формат не поддерживающий сохранение сложных типов, древовидной структуры и пр.

до появления .NET оптимальным местом хранения был реестр (да и сейчас вообщем-то особых противопоказаний нет), а в плюсах — поддержка транзакционных операций и возможность выставления custom security. Про древовидный спомоб хроанения настроек — это как бы само сабой подразумевается.

В последнее время MS проталкивает xml формат
из очевидных преимуществ — возможность развертывания.

так что либо reg, либо xml. ini-файлы — в (_|_)

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

09.06.2012, 11:50 #4

. не было необходимости хранить в ini-файлах базы данных на мегабайты , поэтому использую всегда INI, в каталоге с проектом (объекты тоже можно хранить в ini, если кто не в курсе).

Часто также использую обычные текстовые файлы для хранения настроек, расширение для понятности оставляю прежнее — ini, но по сути работа для удобства идет через класс TStringList, если переменных много.

10 лайфхаков для переустанавливающих Windows

Процесс переустановки Windows, начиная с версии 7, обустроен простым пошаговым мастером, благодаря чему переустановить операционную систему сегодня сможет даже новичок. Ему достаточно освоить процедуру смены устройств загрузки в BIOS компьютера. И, в принципе, даже не нужно вникать в специфику разметки жесткого диска: переустановку Windows годами можно проводить на имеющийся системный раздел диска или вовсе использовать метод установки системы по типу обновления с сохранением профиля и файлов. Куда больше хлопот, чем сама переустановка Windows, доставляет следующий за ней этап – приведение системы в рабочее состояние. На установку драйверов, программ, их настройку, настройку самой системы, как правило, уходит гораздо больше времени, чем непосредственно на процесс установки Windows. С целью свести к минимуму усилия, затрачиваемые обычно на переустановку Windows, и задумана эта статья. Итак, 10 лайфхаков для переустанавливающих Windows.

1. Хранение важных данных в правильных местах

Организация папок пользовательского профиля с вынесением их отдельными разделами в область навигации проводника Windows, бесспорно, удобна. Но это далеко не безопасно для хранимых в этих папках данных в силу уязвимости диска С, на котором папки пользовательского профиля располагаются.

Хранение данных на несистемных разделах жесткого диска обезопасит их от уничтожения в случае сбоя работы Windows. И еще сократит время переустановки системы, поскольку без сохранения данных профиля эта процедура происходит быстрее.

2. Портативные программы

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

3. Перечень установленных программ и хранение инсталляторов

Чтобы быстро привести в рабочее состояние чужой компьютер, перед переустановкой Windows можно сгенерировать пошаговый план инсталляции ПО в дальнейшем. Практически все серьезные деинсталляторы в числе функционала предусматривают возможность создания списка установленных в системе программ. Это, например, такие программы-деинсталляторы как: Reg Organizer, Wise Program Uninstaller, CCleaner, Revo Uninstaller и пр.

Совет новичкам, переустанавливающим Windows – хранить в отдельной папке на несистемном разделе диска инсталляторы программ и ключи активации этих программ, если они платные.


4. Синхронизация данных

Переложить часть хлопот при переустановке Windows на автоматику можно, пользуясь функцией синхронизации данных самой системы и в том ПО, которое предусматривает такую возможность.

Синхронизация темы оформления, настроек языка, данных штатного браузера — Internet Explorer или Microsoft Edge — и прочих поддерживаемых параметров в системах Windows 8.1 и 10 возможна при условии работы с подключенной учетной записью Microsoft. Управление параметрами синхронизации осуществляется в приложении «Параметры», в разделе «Учетные записи».

Функция синхронизации данных поможет привести только что установленный браузер в рабочее состояние в считанные секунды. Закладки, введенные в формы авторизации на сайтах логины и пароли, некоторые настройки, в отдельных случаях расширения – все это само вернется после входа в аккаунт только что установленного браузера. Синхронизацию данных поддерживают такие браузеры как: Google Chrome, Mozila Firefox, Яндекс.Браузер, Opera, Maxthon.

Функцию синхронизации данных можно встретить и в других типах программ, например, в менеджерах паролей.

5. Экспорт-импорт настроек и данных

Процедура экспорта-импорта настроек и данных, безусловно, хлопотнее автоматической их синхронизации, но и к ней лучше прибегнуть, чем в отдельных случаях возиться с настройкой ПО вручную. Если используемый браузер не поддерживает функцию синхронизации, прежде переустановки Windows необходимо экспортировать как минимум сохраненные закладки. Возможность экспорта-импорта настроек и данных должна присутствовать в серьезных функциональных и пусть несложных, но работающих с базами данных, программах. Менеджеры паролей, органайзеры, хранители контактов, учетники ресурсов или клиентов и подобный им тип софта, работающий с данными пользователей, необходимо подбирать только при условии наличия функции экспорта-импорта данных, если не предусматривается синхронизация посредством веб-ресурса разработчика. Если такого рода программы работают с отдельными файлами баз данных, естественно, хранить эти файлы баз данных необходимо на несистемном разделе диска.

Функция экспорта-импорта данных в приложениях пакета Microsoft Office реализована в меню «Файл», в разделе «Параметры». Настроенные для удобства в работе вкладки ленты меню и панель быстрого доступа в подразделах, соответственно, «Настроить ленту» и «Панель быстрого доступа» экспортируются в специальный настроечный файл, а затем могут быть импортированы после установки Microsoft Office на переустановленной Windows.

А для переноса панели быстрого доступа проводника Windows в новую систему

необходимо экспортировать в REG-файл ключ реестра:

Это делается с помощью опции контекстного меню «Экспортировать».

После переустановки Windows этот REG-файл необходимо запустить обычным двойным кликом, и настройки панели быстрого доступа проводника будут импортированы.

Опытные пользователи перенос настроек программ, не поддерживающих функцию их экспорта-импорта, могут проводить вручную — путем переноса папок или отдельных файлов программ из папок «Program Files» и «AppData» на диске С старой Windows в эти же папки на переустановленной системе. Поскольку такой способ чреват ошибками в работе программ, если переносить из старой системы все подряд, новичкам подобного рода эксперименты лучше проводить с обязательной подстраховкой в виде предварительно созданной точки восстановления или резервной копии Windows. А можно и вовсе поручить это дело утилите Transwiz для переноса профиля пользователя на переустановленную Windows.

6. Менеджеры драйверов

Любителям пиратских модифицированных сборок Windows совет – всегда иметь на несистемном разделе диска установщик драйвера сетевой карты или модуля Wi-Fi. На все прочие комплектующие компьютера установить драйвера, если это не произошло автоматически в процессе установки Windows, можно, скачав их с сайта производителя ноутбука или комплектующих ПК. Упростить процесс установки драйверов призван специальный тип софта – менеджеры драйверов, сканирующие аппаратную начинку компьютера, скачивающие драйвера с Интернета и проводящие процесс их установки. В числе таковых программы Slim Drivers, Driver Easy, DriverMax, Advanced Driver Updater, Auslogics Driver Updater и прочие. А для таких менеджеров драйверов, как DriverPack Solution, SamDrivers, Snappy Driver Installer, предусматриваются оффлайн-версии программ с локальной базой драйверов, независимые от наличия доступа к Интернету.

Переустанавливая на компьютере одну и ту же версию и редакцию Windows, можно использовать возможности резервного копирования и восстановления драйверов, как правило, входящие в состав функционала менеджеров драйверов.

7. Ключ продукта

Если в процессе установки Windows 10 ввод ключа продукта можно пропустить и беспрепятственно продолжить процесс, то в случае с Windows 8.1 такой ход невозможен. Этой версии системы необходим хотя бы временный ключ, не подходящий для активации, но пригодный для установочного процесса. Ключ активации любой из версий Windows желательно хранить записанным на бумажку.

Переустановка Windows может быть осуществлена не только классическим способом с установочного носителя.

8. Возврат компьютера в исходное состояние

Windows 8.1 и 10 обустроены штатным механизмом возврата компьютера в исходное состояние, в результате которого система, по сути, переустанавливается, но при этом сохраняются файлы папок пользовательского профиля на диске С.

9. Облегченная переустановка Windows 10

Упростить переустановку Windows 10, сведя действия к минимуму, можно с помощью утилиты Refresh Windows. Это альтернатива механизму возврата компьютера в исходное состояние, но с преимуществом использования свежайшего дистрибутива Windows. Этот способ не требует участия загрузочного носителя и автоматически решает вопрос с активацией системы.

10. Эталонная резервная копия

Еще один способ упрощения переустановки Windows — создание эталонной резервной копии и восстановление из нее с помощью сторонних программ типа AOMEI Backupper, EaseUS Todo Backup, продуктов компании Paragon. Эталонная резервная копия – это обычная резервная копия, созданная на базе установленной и приведенной в рабочее состояние Windows, т.е. с нужными системными настройками, с инсталлированными драйверами и программами. При необходимости перед созданием эталонной резервной копии Windows можно освободить от привязки к комплектующим, чтобы систему можно было восстанавливать на других компьютерах.

Как я могу хранить настройки программы?

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

Программа будет использовать эти настройки часто, так что я хотел бы кэшировать настройки в файл на ПК, так что он не должен попасть на сервере постоянно. Есть много настроек. Я думал о хранении их в файле XML, но мне нужен файл, чтобы быть нечитаемыми пользователями ПК.

Как следует хранить настройки на ПК, что программа может читать и писать, чтобы, но пользователь не может читать?


EDIT: Извините, ребята. Приложение пишется в C # с использованием .NET 2.0. Приложение будет работать только на Windows. Это консольное приложение, которое будет работать в качестве службы Windows.

Предполагая, что вы ориентируетесь на платформе Windows, вы можете

  • использовать реестр
  • использовать файл конфигурации
  • или использовать базу данных

Данные могут быть зашифрованы во всех 3-х случаях, если это необходимо. Если у вас действительно есть много настроек, реестр, вероятно, не самый простой способ сделать это. Если у вас есть приложение, .net, смотреть на SQL Server Compact Edition, это очень легкий вес, легко развернуть с приложением, и не нуждается в среде выполнения.

вы могли бы написать Aplication конфиги в XML, как это

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

Один из самых простых способов хранения настроек в .NET является создать класс, который содержит все, что вы хотите отслеживать, а затем сериализовать его и с диска. Так как этот файл просто выступает в качестве кэш-памяти, вероятно, можно просто использовать Binary Formatter, который сделает файл доступен только для тех, кто знает, что они делают.

Не забудьте сохранить настройки в дружественной директории UAC как ApplicationData .

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

В приложении Windows, у вас есть выбор реестра или файл или локальной базы данных. Для файлов, ваш выбор простых свойств файла или файл XML.

Для любого из них, на ваш выбор зашифрованы (на всякий случай), или нет.

Настройки довольно легко в C # .net. Создание файла настроек можно сделать с помощью страницы свойств проекта (вкладка Settings). Тогда , если вы действительно хотите, вы можете подобрать файл настроек и шифрование корневого элемента XML либо с симметричными или асимметричными ключами

Тогда, как уже упоминалось, сохраняя ключи и процедуры для изменения настроек из рук пользователя является еще одной проблемой. Вы можете отправить настройки на сервер, на котором существует секретный ключ хранится только открытый ключ клиента для дешифрования, есть сервер сделать шифрование / подпись. Любые манипуляции с настройками на клиенте вы знаете, потому что подпись потерпит неудачу. Таким образом, если у вас есть настройки, сохраненные локально, пользователь не мог читать их без кусочка коды, и вы можете расшифровать их только использовать их; написание / создание будет сделано сервером.

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

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

Ваша идея для конфигурации XML является хорошим началом (XML-DOM легко перемещаться, хорошо известны, задокументированы и т.д.).

Если вы не хотите, чтобы пользователь мог прочитать / изменить настройки вы можете сохранить его в памяти, но вы потеряете данные от запуска к запуску. Вы, похоже, не указывает, что приложение будет возобновлен, хотя так это может работать для вас. Существует также возможность обнаружения, когда приложение завершает работу, а затем вы можете сбросить кэшировать на диск.

Вы обеспокоены пользователи чтения файла или изменить его?

Независимо от того — вы можете зашифровать его со случайным ключом и закопать где-нибудь ключ в реестре

Хранение и извлечение параметров и других данных приложений Store and retrieve settings and other app data

Данные приложения — это изменяемые данные, создаваемые и управляемые конкретным приложением. App data is mutable data that is created and managed by a specific app. Он включает состояние среды выполнения, параметры приложения, пользовательские настройки, справочное содержимое (например, определения словарей в словарном приложении) и другие параметры. It includes runtime state, app settings, user preferences, reference content (such as the dictionary definitions in a dictionary app), and other settings. Данные приложений отличаются от пользовательских данных, данных, создаваемых и управляемых пользователем при использовании приложения. App data is different from user data, data that the user creates and manages when using an app. К данным пользователей относятся файлы документов или мультимедиа, записи электронной почты или сообщения, а также записей базы данных, содержащих содержимое, созданное пользователем. User data includes document or media files, email or communication transcripts, or database records holding content created by the user. Пользовательские данные могут быть полезными или осмысленными для более чем одного приложения. User data may be useful or meaningful to more than one app. Часто это данные, которые пользователь хочет обрабатывать или передавать как сущность независимо от самого приложения, например документа. Often, this is data that the user wants to manipulate or transmit as an entity independent of the app itself, such as a document.

Важное замечание о данных приложения: Время существования данных приложения связано со временем существования приложения. Important note about app data: The lifetime of the app data is tied to the lifetime of the app. Если приложение удалено, все данные приложения будут потеряны. If the app is removed, all of the app data will be lost as a consequence. Не используйте данные приложений для хранения пользовательских данных или чего-либо, которые пользователи могут воспринимать как ценные и невосстановимых. Don’t use app data to store user data or anything that users might perceive as valuable and irreplaceable. Для хранения этих сведений рекомендуется использовать библиотеки пользователя и Microsoft OneDrive. We recommend that the user’s libraries and Microsoft OneDrive be used to store this sort of information. Данные приложения идеально подходят для хранения пользовательских настроек, параметров и избранного приложения. App data is ideal for storing app-specific user preferences, settings, and favorites.

Типы данных приложений Types of app data

Существует два типа данных приложения: параметры и файлы. There are two types of app data: settings and files.

Настройки Settings

Используйте параметры для хранения пользовательских настроек и сведений о состоянии приложения. Use settings to store user preferences and application state info. API данных приложений позволяет легко создавать и извлекать параметры (мы покажем некоторые примеры ниже в этой статье). The app data API enables you to easily create and retrieve settings (we’ll show you some examples later in this article).

Ниже приведены типы данных, которые можно использовать для параметров приложения. Here are data types you can use for app settings:

  • Uint8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, DoubleUInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
  • ЛогическийBoolean
  • Char16, строкаChar16, String
  • DateTime, TimeSpanDateTime, TimeSpan
    • Для C#/.NET используйте: System. DateTimeOffset, System. TimeSpan . For C#/.NET, use: System.DateTimeOffset, System.TimeSpan
  • GUID, точка, Размер, RectGUID, Point, Size, Rect
  • Аппликатиондатакомпоситевалуе: набор связанных параметров приложения, которые должны быть сериализованы и десериализованы атомарным образом. ApplicationDataCompositeValue: A set of related app settings that must be serialized and deserialized atomically. Используйте составные параметры, чтобы легко управлять атомарными обновлениями взаимозависимых параметров. Use composite settings to easily handle atomic updates of interdependent settings. Система обеспечивает целостность составных параметров во время параллельного доступа и роуминга. The system ensures the integrity of composite settings during concurrent access and roaming. Составные параметры оптимизированы для небольших объемов данных, и производительность может быть низкой, если они используются для больших наборов данных. Composite settings are optimized for small amounts of data, and performance can be poor if you use them for large data sets.

Файлы Files

Используйте файлы для хранения двоичных данных или для включения собственных настраиваемых сериализованных типов. Use files to store binary data or to enable your own, customized serialized types.

Хранение данных приложений в хранилищах данных приложений Storing app data in the app data stores

При установке приложения система предоставляет ему собственные пользовательские хранилища данных для параметров и файлов. When an app is installed, the system gives it its own per-user data stores for settings and files. Вам не нужно знать, где и как эти данные существуют, поскольку система несет ответственность за управление физическим хранилищем, обеспечивая изолированность данных от других приложений и других пользователей. You don’t need to know where or how this data exists, because the system is responsible for managing the physical storage, ensuring that the data is kept isolated from other apps and other users. Система также сохраняет содержимое этих хранилищ данных, когда пользователь устанавливает обновление в приложение и удаляет содержимое этих хранилищ данных полностью и аккуратно при удалении приложения. The system also preserves the contents of these data stores when the user installs an update to your app and removes the contents of these data stores completely and cleanly when your app is uninstalled.

В хранилище данных приложений для каждого приложения определены системные корневые каталоги: один для локальных файлов, один для перемещаемых файлов и один для временных файлов. Within its app data store, each app has system-defined root directories: one for local files, one for roaming files, and one for temporary files. Приложение может добавлять новые файлы и новые контейнеры в каждый из этих корневых каталогов. Your app can add new files and new containers to each of these root directories.

Данные локального приложения Local app data

Данные локального приложения следует использовать для любых сведений, которые необходимо сохранять между сеансами приложения и которые не подходят для перемещаемых данных приложений. Local app data should be used for any information that needs to be preserved between app sessions and is not suitable for roaming app data. Данные, которые не применяются на других устройствах, также должны храниться здесь. Data that is not applicable on other devices should be stored here as well. Общий размер хранимых локальных данных не ограничен. There is no general size restriction on local data stored. Используйте локальное хранилище данных приложений для данных, которые не имеют смысла перемещаться и для больших наборов данных. Use the local app data store for data that it does not make sense to roam and for large data sets.

Получение хранилища данных локального приложения Retrieve the local app data store

Прежде чем можно будет читать или записывать данные локального приложения, необходимо получить локальное хранилище данных приложения. Before you can read or write local app data, you must retrieve the local app data store. Чтобы получить локальное хранилище данных приложения, используйте свойство ApplicationData. LocalSettings , чтобы получить локальные параметры приложения в виде объекта ApplicationDataContainer . To retrieve the local app data store, use the ApplicationData.LocalSettings property to get the app’s local settings as an ApplicationDataContainer object. Используйте свойство ApplicationData. локалфолдер для получения файлов в объекте сторажефолдер . Use the ApplicationData.LocalFolder property to get the files in a StorageFolder object. Используйте свойство ApplicationData. локалкачефолдер , чтобы получить папку в локальном хранилище данных приложений, где можно сохранять файлы, не входящие в резервные копии и восстановление. Use the ApplicationData.LocalCacheFolder property to get the folder in the local app data store where you can save files that are not included in backup and restore.

Создание и получение простого локального параметра Create and retrieve a simple local setting

Чтобы создать или записать параметр, используйте свойство ApplicationDataContainer. Values для доступа к параметрам в контейнере localSettings , полученном на предыдущем шаге. To create or write a setting, use the ApplicationDataContainer.Values property to access the settings in the localSettings container we got in the previous step. В этом примере создается параметр с именем exampleSetting . This example creates a setting named exampleSetting .

Чтобы получить этот параметр, используйте то же свойство ApplicationDataContainer. Values , которое использовалось для создания параметра. To retrieve the setting, you use the same ApplicationDataContainer.Values property that you used to create the setting. В этом примере показано, как получить только что созданный параметр. This example shows how to retrieve the setting we just created.

Создание и получение локального составного значения Create and retrieve a local composite value

Чтобы создать или записать составное значение, создайте объект аппликатиондатакомпоситевалуе . To create or write a composite value, create an ApplicationDataCompositeValue object. В этом примере создается составной параметр с именем exampleCompositeSetting и добавляется в контейнер localSettings . This example creates a composite setting named exampleCompositeSetting and adds it to the localSettings container.

В этом примере показано, как получить только что созданное составное значение. This example shows how to retrieve the composite value we just created.

Создание и чтение локального файла Create and read a local file

Чтобы создать и обновить файл в локальном хранилище данных приложения, используйте API файлов, такие как Windows. Storage. сторажефолдер. CreateFileAsync и Windows. Storage. FileIO. вритетекстасинк. To create and update a file in the local app data store, use the file APIs, such as Windows.Storage.StorageFolder.CreateFileAsync and Windows.Storage.FileIO.WriteTextAsync. В этом примере создается файл с именем dataFile.txt в контейнере localFolder и записывается текущая дата и время в файл. This example creates a file named dataFile.txt in the localFolder container and writes the current date and time to the file. Значение реплацеексистинг из перечисления креатионколлисионоптион указывает на замену файла, если он уже существует. The ReplaceExisting value from the CreationCollisionOption enumeration indicates to replace the file if it already exists.

Чтобы открыть и прочитать файл в локальном хранилище данных приложения, используйте API-интерфейсы файлов, такие как Windows. Storage. сторажефолдер. GetFileAsync, Windows. Storage. StorageFile. жетфилефромаппликатионуриасинки Windows. Storage. FileIO. метод . To open and read a file in the local app data store, use the file APIs, such as Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, and Windows.Storage.FileIO.ReadTextAsync. Этот пример открывает файл dataFile.txt , созданный на предыдущем шаге, и считывает дату из файла. This example opens the dataFile.txt file created in the previous step and reads the date from the file. Дополнительные сведения о загрузке файловых ресурсов из различных расположений см. в разделе Загрузка файловых ресурсов. For details on loading file resources from various locations, see How to load file resources.

Перемещаемые данные Roaming data

При использовании перемещаемых данных в приложении пользователи могут без проблем синхронизировать данные приложения на нескольких устройствах. If you use roaming data in your app, your users can easily keep your app’s app data in sync across multiple devices. Если пользователь устанавливает приложение на нескольких устройствах, операционная система сохраняет синхронизацию данных приложения, уменьшая объем работы по установке, которую пользователь должен выполнить для вашего приложения на втором устройстве. If a user installs your app on multiple devices, the OS keeps the app data in sync, reducing the amount of setup work that the user needs to do for your app on their second device. Роуминг также позволяет пользователям продолжить задачу, например создание списка, с тем, что они остались даже на другом устройстве. Roaming also enables your users to continue a task, such as composing a list, right where they left off even on a different device. Операционная система реплицирует перемещаемые данные в облако при обновлении и синхронизирует данные с другими устройствами, на которых установлено приложение. The OS replicates roaming data to the cloud when it is updated, and synchronizes the data to the other devices on which the app is installed.

Операционная система ограничивает размер данных приложения, которые может перемещать каждое приложение. The OS limits the size of the app data that each app may roam. См. раздел ApplicationData. роамингсторажекуота. See ApplicationData.RoamingStorageQuota. Если приложение достигает этого предела, ни одно из данных приложений приложения не будет реплицировано в облако, пока все данные приложения не будут меньше этого предела. If the app hits this limit, none of the app’s app data will be replicated to the cloud until the app’s total roamed app data is less than the limit again. По этой причине рекомендуется использовать перемещаемые данные только для пользовательских предпочтений, ссылок и небольших файлов данных. For this reason, it is a best practice to use roaming data only for user preferences, links, and small data files.

Перемещаемые данные для приложения доступны в облаке при условии, что пользователь обращается к нему с какого-либо устройства в течение требуемого интервала времени. Roaming data for an app is available in the cloud as long as it is accessed by the user from some device within the required time interval. Если пользователь не запускает приложение дольше этого интервала времени, его перемещаемые данные удаляются из облака. If the user does not run an app for longer than this time interval, its roaming data is removed from the cloud. Если пользователь удаляет приложение, его перемещаемые данные не удаляются из облака автоматически. If a user uninstalls an app, its roaming data isn’t automatically removed from the cloud, it’s preserved. Если пользователь переустанавливает приложение в течение интервала времени, перемещаемые данные синхронизируются из облака. If the user reinstalls the app within the time interval, the roaming data is synchronized from the cloud.

Данные роуминга и их запреты Roaming data do’s and don’ts

  • Используйте роуминг для пользовательских настроек, ссылок и небольших файлов данных. Use roaming for user preferences and customizations, links, and small data files. Например, можно использовать роуминг, чтобы сохранить предпочтение цвета фона для всех устройств. For example, use roaming to preserve a user’s background color preference across all devices.
  • Используйте роуминг, чтобы позволить пользователям продолжить задачу на устройствах. Use roaming to let users continue a task across devices. Например, перемещаем данные приложения, например содержимое черновика электронного письма или последней просмотренной страницы в приложении Reader. For example, roam app data like the contents of an drafted email or the most recently viewed page in a reader app.
  • Обработка события с измененными данными путем обновления данных приложения. Handle the DataChanged event by updating app data. Это событие возникает, когда данные приложения только что завершили синхронизацию из облака. This event occurs when app data has just finished syncing from the cloud.
  • Перемещать ссылки на содержимое, а не на необработанные данные. Roam references to content rather than raw data. Например, переместить URL-адрес, а не содержимое статьи в Интернете. For example, roam a URL rather than the content of an online article.
  • Для важных, критических для времени параметров используйте параметр хигхприорити , связанный с роамингсеттингс. For important, time critical settings, use the HighPriority setting associated with RoamingSettings.
  • Не следует перемещать данные приложений, характерные для устройства. Don’t roam app data that is specific to a device. Некоторые сведения относятся только локально, например имя пути к локальному файлу ресурса. Some info is only pertinent locally, such as a path name to a local file resource. Если вы решите переместить локальную информацию, убедитесь, что приложение может восстановиться, если эти сведения не являются допустимыми на вторичном устройстве. If you do decide to roam local information, make sure that the app can recover if the info isn’t valid on the secondary device.
  • Не следует перемещать большие наборы данных приложений. Don’t roam large sets of app data. Существует ограничение на объем данных приложений, которые может перемещать приложение. чтобы получить это максимальное значение, используйте свойство роамингсторажекуота . There’s a limit to the amount of app data an app may roam; use RoamingStorageQuota property to get this maximum. Если приложение достигает этого предела, данные не могут перемещаться, пока размер хранилища данных приложения не превысит предельное значение. If an app hits this limit, no data can roam until the size of the app data store no longer exceeds the limit. При проектировании приложения подумайте о том, как разместить границу больших данных, чтобы не превысить ограничение. When you design your app, consider how to put a bound on larger data so as to not exceed the limit. Например, если для сохранения состояния игры требуется 10 КБ, приложение может хранить не более 10 игр. For example, if saving a game state requires 10KB each, the app might only allow the user store up to 10 games.
  • Не используйте роуминг для данных, которые используют мгновенную синхронизацию. Don’t use roaming for data that relies on instant syncing. Windows не гарантирует мгновенную синхронизацию; Роуминг может значительно откладываться, если пользователь находится в автономном режиме или в сети с высокой задержкой. Windows doesn’t guarantee an instant sync; roaming could be significantly delayed if a user is offline or on a high latency network. Убедитесь, что пользовательский интерфейс не зависит от мгновенной синхронизации. Ensure that your UI doesn’t depend on instant syncing.
  • Не используйте роуминг для часто изменяющихся данных. Don’t use roaming for frequently changing data. Например, если приложение отслеживает часто изменяющиеся сведения, такие как расположение в песне, в секунду, не храните его в качестве перемещаемых данных приложения. For example, if your app tracks frequently changing info, such as the position in a song by second, don’t store this as roaming app data. Вместо этого выберите менее частное представление, которое по-прежнему обеспечивает хорошее взаимодействие с пользователем, например воспроизводимая песня. Instead, pick a less frequent representation that still provides a good user experience, like the currently playing song.

Предварительные требования для роуминга Roaming pre-requisites

Любой пользователь может воспользоваться преимуществами перемещаемых данных приложений, если они используют учетная запись Майкрософт для входа на устройство. Any user can benefit from roaming app data if they use a Microsoft account to log on to their device. Однако пользователи и администраторы групповой политики могут в любое время отключать перемещаемые данные приложений на устройстве. However, users and group policy administrators can switch off roaming app data on a device at any time. Если пользователь решил не использовать учетная запись Майкрософт или отключать возможности перемещения данных, он по-прежнему сможет использовать ваше приложение, но данные приложения будут локальными для каждого устройства. If a user chooses not to use a Microsoft account or disables roaming data capabilities, she will still be able to use your app, but app data will be local to each device.

Данные, хранящиеся в PasswordVault , будут переходить только в том случае, если пользователь сделал устройство доверенным. Data stored in the PasswordVault will only transition if a user has made a device “trusted”. Если устройство не является доверенным, данные, защищенные в этом хранилище, не будут перемещаться. If a device isn’t trusted, data secured in this vault will not roam.

Разрешение конфликтов Conflict resolution

Перемещаемые данные приложения не предназначены для одновременного использования на нескольких устройствах одновременно. Roaming app data is not intended for simultaneous use on more than one device at a time. Если во время синхронизации возникает конфликт, поскольку определенная единица данных была изменена на двух устройствах, система всегда будет предпочитать значение, которое было записано последним. If a conflict arises during synchronization because a particular data unit was changed on two devices, the system will always favor the value that was written last. Это гарантирует, что приложение будет использовать самые последние сведения. This ensures that the app utilizes the most up-to-date information. Если единица данных является составной, разрешение конфликтов все равно будет происходить на уровне единицы параметра, что означает, что совмещенный с последним изменением будет синхронизирован. If the data unit is a setting composite, conflict resolution will still occur on the level of the setting unit, which means that the composite with the latest change will be synchronized.

Время записи данных When to write data

В зависимости от ожидаемого времени существования параметра данные должны записываться в разное время. Depending on the expected lifetime of the setting, data should be written at different times. Нечастое или медленно изменяющееся данные приложения следует записывать немедленно. Infrequently or slowly changing app data should be written immediately. Однако данные приложения, которые часто меняются, должны периодически записываться с регулярными интервалами (например, каждые 5 минут), а также при приостановке приложения. However, app data that changes frequently should only be written periodically at regular intervals (such as once every 5 minutes), as well as when the app is suspended. Например, музыкальное приложение может записывать параметры «текущая песня» при начале воспроизведения новой песни, однако фактическое расположение в песне должно быть написано только при приостановке. For example, a music app might write the “current song” settings whenever a new song starts to play, however, the actual position in the song should only be written on suspend.

Чрезмерная защита использования Excessive usage protection

Система использует различные механизмы защиты, чтобы избежать неправильного использования ресурсов. The system has various protection mechanisms in place to avoid inappropriate use of resources. Если данные приложения не переходят ожидаемым образом, скорее всего, устройство временно ограничено. If app data does not transition as expected, it is likely that the device has been temporarily restricted. Ожидание в течение некоторого времени обычно приводит к автоматическому устранению этой ситуации, и никаких действий не требуется. Waiting for some time will usually resolve this situation automatically and no action is required.

Управление версиями Versioning

Данные приложения могут использовать управление версиями для обновления одной структуры данных до другой. App data can utilize versioning to upgrade from one data structure to another. Номер версии отличается от версии приложения и может быть установлен в. The version number is different from the app version and can be set at will. Хотя это и не применяется, настоятельно рекомендуется использовать более высокие номера версий, так как при попытке перехода на более низкий номер версии данных, представляющий новые данные, могут возникать нежелательные сложности (включая потери данных). Although not enforced, it is highly recommended that you use increasing version numbers, since undesirable complications (including data loss)could occur if you try to transition to a lower data version number that represents newer data.

Данные приложений перемещаются только между установленными приложениями с одинаковым номером версии. App data only roams between installed apps with the same version number. Например, устройства в версии 2 будут переносить данные между собой, а устройства в версии 3 будут выполнять те же действия, но роуминг между устройством, работающим под управлением версии 2, и устройством, работающим под управлением версии 3, будет невозможен. For example, devices on version 2 will transition data between each other and devices on version 3 will do the same, but no roaming will occur between a device running version 2 and a device running version 3. При установке нового приложения, использующего различные номера версий на других устройствах, вновь установленное приложение будет синхронизировать данные приложения, связанные с самым высоким номером версии. If you install a new app that utilized various version numbers on other devices, the newly installed app will sync the app data associated with the highest version number.

Тестирование и средства Testing and tools

Разработчики могут заблокировать устройство, чтобы активировать синхронизацию перемещаемых данных приложений. Developers can lock their device in order to trigger a synchronization of roaming app data. Если кажется, что данные приложения не переходят в течение определенного промежутка времени, проверьте следующие элементы и убедитесь, что: If it seems that the app data does not transition within a certain time frame, please check the following items and make sure that:

  • Перемещаемые данные не превышают максимальный размер (Дополнительные сведения см. в роамингсторажекуота ). Your roaming data does not exceed the maximum size (see RoamingStorageQuota for details).
  • Ваши файлы закрываются и освобождаются должным образом. Your files are closed and released properly.
  • Существует по меньшей мере два устройства с одинаковой версией приложения. There are at least two devices running the same version of the app.

Регистрация для получения уведомлений при изменении перемещаемых данных Register to receive notification when roaming data changes

Чтобы использовать перемещаемые данные приложения, необходимо зарегистрироваться для изменения перемещаемых данных и получить перемещаемые контейнеры данных, чтобы можно было читать и записывать параметры. To use roaming app data, you need to register for roaming data changes and retrieve the roaming data containers so you can read and write settings.

Зарегистрируйтесь, чтобы получить уведомление при изменении перемещаемых данных. Register to receive notification when roaming data changes.

Событие с измененными данными уведомляет вас при изменении перемещаемых данных. The DataChanged event notifies you when roaming data changes. В этом примере задается DataChangeHandler в качестве обработчика для изменения перемещаемых данных. This example sets DataChangeHandler as the handler for roaming data changes.

Получите контейнеры для параметров и файлов приложения. Get the containers for the app’s settings and files.

Создание и получение параметров роуминга Create and retrieve roaming settings

Используйте свойство ApplicationDataContainer. Values для доступа к параметрам в контейнере roamingSettings , который мы приступили в предыдущем разделе. Use the ApplicationDataContainer.Values property to access the settings in the roamingSettings container we got in the previous section. В этом примере создается простой параметр с именем exampleSetting и составное значение с именем composite . This example creates a simple setting named exampleSetting and a composite value named composite .

В этом примере извлекаются только что созданные параметры. This example retrieves the settings we just created.

Создание и получение перемещаемых файлов Create and retrieve roaming files

Чтобы создать и обновить файл в хранилище данных перемещаемых приложений, используйте API файлов, такие как Windows. Storage. сторажефолдер. CreateFileAsync и Windows. Storage. FileIO. вритетекстасинк. To create and update a file in the roaming app data store, use the file APIs, such as Windows.Storage.StorageFolder.CreateFileAsync and Windows.Storage.FileIO.WriteTextAsync. В этом примере создается файл с именем dataFile.txt в контейнере roamingFolder и записывается текущая дата и время в файл. This example creates a file named dataFile.txt in the roamingFolder container and writes the current date and time to the file. Значение реплацеексистинг из перечисления креатионколлисионоптион указывает на замену файла, если он уже существует. The ReplaceExisting value from the CreationCollisionOption enumeration indicates to replace the file if it already exists.

Чтобы открыть и прочитать файл в хранилище данных перемещаемых приложений, используйте API-интерфейсы файлов, такие как Windows. Storage. сторажефолдер. GetFileAsync, Windows. Storage. StorageFile. жетфилефромаппликатионуриасинки Windows. Storage. FileIO. метод. To open and read a file in the roaming app data store, use the file APIs, such as Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, and Windows.Storage.FileIO.ReadTextAsync. Этот пример открывает файл dataFile.txt , созданный в предыдущем разделе, и считывает дату из файла. This example opens the dataFile.txt file created in the previous section and reads the date from the file. Дополнительные сведения о загрузке файловых ресурсов из различных расположений см. в разделе Загрузка файловых ресурсов. For details on loading file resources from various locations, see How to load file resources.

Временные данные приложения Temporary app data

Временное хранилище данных приложений работает как кэш. The temporary app data store works like a cache. Его файлы не перемещаются и могут быть удалены в любое время. Its files do not roam and could be removed at any time. Задача обслуживания системы может автоматически удалять данные, хранящиеся в этом расположении, в любое время. The System Maintenance task can automatically delete data stored at this location at any time. Пользователь также может очищать файлы из временного хранилища данных с помощью средства очистки диска. The user can also clear files from the temporary data store using Disk Cleanup. Временные данные приложения можно использовать для хранения временных данных во время сеанса приложения. Temporary app data can be used for storing temporary information during an app session. Нет никакой гарантии, что эти данные будут сохраняться за пределами сеанса приложения, так как система может освободить используемое пространство при необходимости. There is no guarantee that this data will persist beyond the end of the app session as the system might reclaim the used space if needed. Расположение доступно через свойство темпорарифолдер . The location is available via the temporaryFolder property.

Получение временного контейнера данных Retrieve the temporary data container

Чтобы получить файлы, используйте свойство ApplicationData. темпорарифолдер . Use the ApplicationData.TemporaryFolder property to get the files. Следующие шаги используют переменную temporaryFolder на этом шаге. The next steps use the temporaryFolder variable from this step.

Создание и чтение временных файлов Create and read temporary files

Чтобы создать и обновить файл во временном хранилище данных приложения, используйте API файлов, такие как Windows. Storage. сторажефолдер. CreateFileAsync и Windows. Storage. FileIO. вритетекстасинк. To create and update a file in the temporary app data store, use the file APIs, such as Windows.Storage.StorageFolder.CreateFileAsync and Windows.Storage.FileIO.WriteTextAsync. В этом примере создается файл с именем dataFile.txt в контейнере temporaryFolder и записывается текущая дата и время в файл. This example creates a file named dataFile.txt in the temporaryFolder container and writes the current date and time to the file. Значение реплацеексистинг из перечисления креатионколлисионоптион указывает на замену файла, если он уже существует. The ReplaceExisting value from the CreationCollisionOption enumeration indicates to replace the file if it already exists.

Чтобы открыть и прочитать файл во временном хранилище данных приложения, используйте API-интерфейсы файлов, такие как Windows. Storage. сторажефолдер. GetFileAsync, Windows. Storage. StorageFile. жетфилефромаппликатионуриасинки Windows. Storage. FileIO. метод. To open and read a file in the temporary app data store, use the file APIs, such as Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, and Windows.Storage.FileIO.ReadTextAsync. Этот пример открывает файл dataFile.txt , созданный на предыдущем шаге, и считывает дату из файла. This example opens the dataFile.txt file created in the previous step and reads the date from the file. Дополнительные сведения о загрузке файловых ресурсов из различных расположений см. в разделе Загрузка файловых ресурсов. For details on loading file resources from various locations, see How to load file resources.

Организация данных приложения с помощью контейнеров Organize app data with containers

Чтобы упростить организацию параметров и файлов данных приложения, создайте контейнеры (представленные объектами ApplicationDataContainer ) вместо работы с каталогами напрямую. To help you organize your app data settings and files, you create containers (represented by ApplicationDataContainer objects) instead of working directly with directories. Контейнеры можно добавлять в локальные, перемещаемые и временные хранилища данных приложений. You can add containers to the local, roaming, and temporary app data stores. Контейнеры могут быть вложены в глубину до 32 уровней. Containers can be nested up to 32 levels deep.

Qt/C++ — Урок 003. QSettings или Как сохранить настройки приложения?

Сохранение настроек Приложения — это одно из первых действий, которое изучают новички при работе с фреймворком Qt. Для этого используется класс QSettings, который позволяет сохранять настройки либо в реестр операционной системы, либо в текстовый файл. В данном уроке будет использован самый простой вариант — это сохранение настроек в реестр операционной системы. Для обеспечения наглядности работы сохранения настроек в данном уроке использовался проект из урока по QSystemTrayIcon .

Программный код был написан в QtCreator 3.3.1 на основе Qt 5.4.1 под Windows.

Структура проекта

Проект создается как Приложение Qt Widgets, в котором по умолчанию создаются файлы:

  • Settings.pro — профайл;
  • mainwindow.h — заголовочный файл основного окна приложения;
  • mainwindow.cpp — исходный код окна;
  • main.cpp — основной исходный файл, с которого стартует приложение;
  • mainwindow.ui — формочка основного окна приложения.

Примечание. Большую часть интерфейса создаю в дизайнере, чтобы не загромождать логику основного кода лишней информацией. По сути это лишь дело вкуса и привычки.

mainwindow.ui

Создаем формочку для теста, в которой будут использоваться два следующих объекта:

  • trayCheckBox — чекбокс для настройки поведения приложения;
  • saveButton — кнопка для выполнения сохранения настроек Приложения;

Settings.pro

По-прежнему в уроках не вносится изменений профайл проекта.

main.cpp

Данный файл подвергается изменениям, поскольку при запуске программы необходимо внести информацию о Приложении в реестр операционной системы.

mainwindow.h

Помимо методов и объектов, использованных в уроке по QSystemTrayIcon в данный файл необходимо внести Слот для обработки нажатия кнопки, в котором будет производиться сохранение настроек.

Также необходимо подключить в проект заголовочные файлы следующих классов:

И прописать директивы define, которые будут использоваться при работе с QSettings.

mainwindow.cpp

В данном классе производится выполнение восстановления настроек приложения при инициализации внешнего вида главного окна, а также сохранение настроек по нажатию по кнопке saveButton.

Итог по уроку QSettings

При успешном написании кода из урока, при нажатии кнопки сохранения настроек, настройки сохранятся в реестр операционной системы.

А после перезапуска приложения настройки будут восстановлены. Если при сохранении настроек чекбокс был отмечен, то при запуске приложения он также будет отмечен. И приложение будет вести себя в соответствии с настройками.

Рекомендуем хостинг TIMEWEB

Рекомендуемые статьи по этой тематике

Как сохранить настройки приложения C#

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

1. База данных, либо текстовые файлы и их аналоги.

3. Конфигурационный фаил.

4. Внутри самого приложения.

С первым вариантом все понятно, создать фаил или базу и сохранить в них соответствующие настройки.

С реестром по сложнее, так как для работы с ним, приложение должно быть запущенно от имени администратора, это не удобно, и не все пользователи обладают такими правами. Однако можно приобрести лицензию в районе 500$ в год, и ваше приложение сможет вносить изменения в реестр без запуска от имени администратора.

А вот последних два варианта мы сейчас и рассмотрим как этом можно сделать.

После компиляции приложения в папки с *.exe у нас находятся не сколько файлов, один из них конфигурационный.

Обычно к имени исполняемого файла с расширением добавляется .config , он и является вашим конфигурационным файлом.

Именно с ним мы можем распространять свое приложения и производить сохранения в него.

Основан он на XML формате и первоначально имеет следующее содержимое:

Илон Маск рекомендует:  Создание отчетов
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
09.06.2012, 16:55 #5