Ingamedialogconfig vdf за что отвечает файл
Я уверен, что многим из вас приходилось использовать файл конфигурации App.Config для хранения инициализирующих или конфигурационных данных приложения. И я так же уверен в том, что многим из вас хотелось создать в данном файле свои собственные структуры для хранения настроек. Но в итоге приходилось использовать встроенные возможности секции и получать значения, используя конструкцию вида:
Что ж, я давно хотел выяснить, как использовать возможности класса ConfigurationSection для описания и загрузки данных, определенных в моем собственном формате. После нескольких часов экспериментов и гугления я смог создать свою структуру данных в файле конфигурации и воспользоваться ей в своем приложении.
- ConfigurationSection — Этот объект вернет нам пользовательскую секцию.
- ConfigurationElementCollection — Это собственно коллекция элементов, которые мы определим в пользовательской секции.
- ConfigurationElement — Это сам элемент, описывающий какую-от определенную вами сущность.
Первое, что нам потребуется сделать, это добавить в наше приложение файл app.Config (если, конечно, вы этого еще не сделали). После чего открываем данный файл и копипастим следующий код между тегами :
Замечание: данная секция должна располагаться в самом начале файла конфигурации, т.е. сразу после тега , иначе будут ошибки инициализации конфигурации.
Далее создадим нашу собственную секцию, которая будет реализовывать нашу собственную модель данных:
Замечание: если кому-то не нравиться добавление узлов командой add в данном примере, то всегда можно сделать свой собственный префикс, используя следующий код:
при определении коллекции элементов в структуре данных. Тогда в конфигурационном файле можно будет писать так:
Закончим модификации в файле конфигурации и перейдем к организации взаимодействия нашего приложения с ним.
Первым делом создадим класс-наследник от ConfigurationSection, что позволит нам взаимодействовать с нашей секцией в файле конфигурации через ConfigurationManager во время исполнения программы.
Атрибут ConfigurationProperty( «Folders» ) требуется для сопоставления свойства FolderItems с корневым узлом нашей структуры данных.
Класс FoldersCollection является наследником ConfigurationElementCollection, который обеспечивает взаимодействие с коллекцией наших элементов, описанных в app.config. Определяется класс так:
Последним нам нужно создать ConfigurationElement, класс который свяжет нас с конечными данными, определенными в конфигурационном файле.
Атрибут ConfigurationProperty(«folderType») требуется для того, что бы проассоциировать имя xml-атрибута в файле конфигурации. Остальные параметры атрибута такие как DefaultValue="", IsKey=true, IsRequired=true определяют только различные опции применимые к свойствам.
Замечание: автор умалчивает, что при стандартном способе использования сеттер свойства FolderType, работать не будет, т.к. файл конфигурации обычно доступен только на чтение. Для того что бы представлялось возможным производить запись в файл конфигурации следует делать, например, так:
Итак, мы имеем все необходимые данные и классы, которые предоставляют нам возможность хранить в конфигурационном файле app.config пользовательскую структуру данных.
Использовать данный подход можно так:
При этом не забываем прописать System.Configuration в список подключаемых пространств имен.
Недавно, сижу играю в кс и вдруг мне на почту стало приходить мнооого писем о том что мой дроп кто то купил. Решил проверить. Захожу в инвент, а там только кейсы остали, а деньги ушли на какую то ♥♥♥♥♥♥♥♥♥♥ за 2 рубля. Дроп был где то от 1300-1800 руб. При всем при этом, стим гуард даже не пискнул. Что это было?
Вирусняк или иная не менее противная вещь была вами с успехом подцеплена. Чистите комп, меняйте пароли. Возможно пригодится чистка реестра. Больше не нажимайте никаких ссылок от малознакомых вам людей и не делайте других непотребных вещей.
Вирусняк или иная не менее противная вещь была вами с успехом подцеплена. Чистите комп, меняйте пароли. Возможно пригодится чистка реестра. Больше не нажимайте никаких ссылок от малознакомых вам людей и не делайте других непотребных вещей.
Пароль поменял и после этого вроде все нормально стало. Поставил стим гуард еще на телефоне. И вообще я думаю, что это не вирус, а скорее всего что то другое.
Просто было дело. Хотел кое кого обмануть и скинул несколько своих файлов с папки стим. Потом они сказали что нужно отключить подтверждение обмена по почте и сможем вам все вышлить. Я такой думаю что тут может такого, гуард включен. Если что то запищит. Фиг знает это ли виновато. Никуда я и никогда не нажимал, а был бы вирус антивирусник запищал бы. Да, знаю, ♥♥♥♥♥♥♥♥♥♥, повелся и т. Д. Может это?
Вирусняк или иная не менее противная вещь была вами с успехом подцеплена. Чистите комп, меняйте пароли. Возможно пригодится чистка реестра. Больше не нажимайте никаких ссылок от малознакомых вам людей и не делайте других непотребных вещей.
а да, совсем забыл сказать, раз было отключено подтверждение обмена, значит поддержка не в силах тебе помочь
Пароль поменял и после этого вроде все нормально стало. Поставил стим гуард еще на телефоне. И вообще я думаю, что это не вирус, а скорее всего что то другое.
Просто было дело. Хотел кое кого обмануть и скинул несколько своих файлов с папки стим. Потом они сказали что нужно отключить подтверждение обмена по почте и сможем вам все вышлить. Я такой думаю что тут может такого, гуард включен. Если что то запищит. Фиг знает это ли виновато. Никуда я и никогда не нажимал, а был бы вирус антивирусник запищал бы. Да, знаю, ♥♥♥♥♥♥♥♥♥♥, повелся и т. Д. Может это?
недавно подключил нет. хател поиграть в cs нет не одного сервера .пытаюсь скачать не получается. чё делать подскажите pliz!
похожая хрень, контра лицензионная, год не играл, и тут приспичило - скачал через стим, жму "найти серверы" начинает искать, очень медленно находит пару серверов, жму "присоедениться", кидает окошко, в нем - "сервер не отвечает", и так с каждым сервером. что с контрой случилось за этот год - непонятно, поможите люди добрые, кто чем может.
Зайдите в ProgramFiles/Conter-Strike Source/confing/MasterServers и измените там "строчки с похожими цифрами" на следующие 188.40.40.201:27011
Отпишитесь помогло или нет. В любом случае удачки вам.
Не находит ни одного сервера
Выйди на улицу, погуляй, заведи друзей небыдло и найди девушку. И больше - тебя не заинтересует эта трабла
Overlord_PG , все сделал как ты писал, не помогло, что делать?)
Если серьезно, то ты думаешь что тут люди сутками задротят и от компа не отходят?
Ты не прав. Я учусь, гуляю, у меня есть девушка. Но иногда я прихожу домой уставший и мне просто хочется немного посидеть за css.
Но иногда я прихожу домой уставший и мне просто хочется немного посидеть за css.
Купи себе ведроидо-фон и играй в Smurfs Viliiage, там интереснее. Вообще - никогда не понимал любителей игры в КС.Ладно - на денежном уровне - WGC, GA, CSGW - да.Но игра ведь - пустышка. Фигня, да и только. Half-Life 1 и 2 - это да, вне всяких похвал. Но - ЭТО?!
Overlord_PG - Но игра ведь - пустышка.
Ахаха) Ой как ты неправ. Это потрясающая игра.
- Вообще - никогда не понимал любителей игры в КС.
Они играют не ради графики и т.д. просто это как спорт, соперничество, решают кто лучше играет.
Eiven, спасибо за отклик) поиском весь комп об искал, файла с именем MasterServers на нем не нашел( контра у меня установлена в папке стим, и папку confing ненашел по адресу C:\Games\Steam\SteamApps\common\counter-strike source\platform\config в ней два файла ingamedialogconfig.vdf и serverbrowser.vdf
Overlord_PG вспоминаются две поговорки) "о вкусах не спорят" и "в чужой монастырь со своим уставом не лезь" каждый играет во что ему нравится, игр полно и все они рассчитаны на разных людей, кому-то и сапера вполне достаточно, я например до сих пор с удовольствием третьих героев запускаю) и такого фана ни с пятых ни с шестых с их наворотами, как не старался получить не могу) ну нравится игрушка и все тут), а так категорично высказываться, мол - играйте в это, и не играйте в это, это типа диктатура чтоли?)
В предыдущих версиях клиента Steam использовался в единственном экземпляре — ClienRegistry.blob.
Имеет четкую структуру в виде дерева и читается рекурсивно до исчерпания дочерних элементов. Отдельных заголовков не имеет — сразу идет корневой узел, имеющий минимум 1 потомка. Формат несколько нелинейный, о чем укажу далее.
Заголовок узла
Каждый узел имеет 2 заголовка — заголовок самого узла и заголовок данных узла.
Формат заголовка узла:
- 0x5001 — простой узел с дочерними узлами;
- 0x4301 — сжатый узел, необходимо пройтись по данным в нем deflate'ом и считать заголовки полученных данных заново (вот она, нелинейность!);
- прочие значения (обычно 0x0000) — именованный узел, содержащий потомков.
Заголовок сжатых данных
Если узел был сжат, то после заголовка узла следует заголовок сжатых данных:
UncompressedSize — размер «сырых» данных, под которые необходимо будет выделить память;
unknown1, unknown2 — назначение неизвестно, всегда равно 0x00000001, на парсинг не влияют.
Как и писалось выше, для данных, полученных после вызова uncompress из ZLib'а, следует повторно считать заголовок узла.
Разбор данных
После чтения заголовка узла и, по необходимости, распаковки его содержимого, наступает самая «веселая» часть — чтение содержимого узла. Алгоритм был максимально оптимизирован, из-за чего разобраться в нем по прошествии такого промежутка времени оказалось не так-то и просто.
Разбор данных зависит от поля TBLOBNodeHeader.Magic — если оно равно 0x5001, то сразу читаем узлы-потомки.
В противном случае читаем заголовок TBLOBDataHeader
- Если 0x5001 или 0x4301 — читаем новый узел;
- В противном случае — сохраняем как просто данные.
CDR (Content Description Record)
- 0 — версия файла (число, 16 бит);
- 1 — записи приложений;
- 2 — описание пакетов приложений;
- 3, 4 — назначение так и не определено, поэтому просто игнорируются;
- 5 — публичный ключи приложений;
- 6 — зашифрованные приватные ключи.
Много ну очень скучных и длинных перечислений, можно даже не читать. Назначение части полей неясно до сих пор.
Записи приложений
- 1 — ID приложения;
- 2 — Название приложения;
- 3 — Каталог приложения;
- 4 — Минимальный размер файла кэша;
- 5 — Максимальный размер файла кэша;
- 6 — Содержит список параметров запуска;
- 7 — Содержит список иконок приложения;
- 8 — ID приложения. которое необходимо запустить при первом запуске;
- 9 — флаг Is Bandwidth Greedy;
- 10 — Список версий приложения;
- 11 — ID текущей версии приложения;
- 12 — Список файлов кэша приложения;
- 13 — Номер тестовой версии;
- 14 — Дополнительные поля в виде списка пар «имя-значение»;
- 15 — пароль тестовой версии;
- 16 — ID тестовой версии;
- 17 — Оригинальная папка игры;
- 18 — Флаг SkipMFPOverwrite;
- 19 — Флаг UseFilesystemDvr.
- 1 — Описание;
- 2 — Параметры командной строки;
- 3 — Номер иконки;
- 4 — Флаг, отвечающий за отсутствие ярлыка на рабочем столе;
- 5 — Флаг, отвечающий за отсутствие ярлыка в меню «Пуск»;
- 6 — Флаг Long Running Unattended.
- 1 — Описание версии;
- 2 — Номер версии;
- 3 — Флаг, отвечающий за недоступность приложения данной версии;
- 4 — Список ID параметров запуска для данной версии;
- 5 — Ключ дешифрования для контента;
- 6 — Флаг, указывающий наличие ключа дешифрования;
- 7 — Флаг IsRebased;
- 8 — Флаг IsLongVersionRoll.
- 1 — ID файла кэша;
- 2 — Имя монтируемого файла кэша;
- 3 — Флаг, отвечающий за необязательность данного файла кэша.
Описание пакетов приложений
1 — ID пакета;
2 — Имя пакета;
3 — Тип пакета;
4 — Цена в центах;
5 — Какой-то там период в минутах;
6 — Список ID приложений данного пакета;
7 — ID запускаемого приложения (WTF?);
8 — Флаг OnSubscribeRunLaunchOptionIndex;
9 — Список RateLimitRecord;
10 — Список Discounts;
11 — Флаг предзаказа;
12 — Флаг, указывающий требование наличия физического адреса покупателя;
13 — Внутренняя цена в центах;
14 — Международная цена в центах;
15 — Тип требуемого ключа;
16 — Флаг, указывающий что данный пакет только для киберкафе;
17 — Некий игровой код;
18 — Описание этого кода;
19 — Флаг недоступности пакета;
20 — Флаг требования диска с игрой;
21 — Код территории. на которой эта игра доступна;
22 — Флаг, указывающий на то, что пакет доступен в 3-ей версии;
23 — Дополнительные поля в виде списка пар «имя-значение».
VDF
В файлах данного формата хранятся настройки клиента, а в нынешних версиях — еще и информация о приложениях. Может быть как двоичным, так и текстовым файлом.
Как и BLOB имеет древовидную структуру.
Рассмотрим бинарный файл. Есть несколько типов файлов, отличающихся структурой и заголовками, но формат узлов у них одинаковый.
- 0 — содержит только подузлы;
- 1 — строковые данные;
- 2 — целое число;
- 3 — дробное число;
- 4 — указатель (на что??);
- 5 — Unicode-строка;
- 6 — цвет;
- 7 — целое 64-битное число;
- 8 — маркер конца списка узлов.
Рассмотрим основные бинарные файлы, использующие бинарный вариант формата VDF.
appcache/appinfo.vdf
Сперва идет заголовок со следующим содержимым:
Поля version1 и version2 ранее рассматривались как часть сигнатуры, но со временем и они изменились — раньше они были равны 0x24 и 0x06, теперь равны 0x26 и 0x07 соответственно.
Поле type является сигнатурой и содержит 0x4456 ('DV').
Поле version3 всегда содержит 0x00000001.
После заголовка идет список с информацией о приложении, каждый элемент которого имеет свой заголовок:
После заголовка следует список параметров-узлов, содержащих 1 байт метки конца списка (0х00, если конец) и элемент VDF-дерева.
appcache/packageinfo.vdf
- version1 и version2 ранее содержали 0x25 и 0x06, теперь — 0x27 и 0x06;
- type — 0x5556 ('UV').
PAK
Устаревший формат архивов, используемый в первых версиях Half-Life 1. Никакого сжатия, это просто контейнер для файлов.
Заголовок файла:
Sign — сигнатура, содержит 'PACK'.
DirectoryOffset — смещение начала списка элементов.
DirectoryLength — размер списка элементов.
По указанному смещению находится массив заголовков элементов, содержащихся в архиве:
Думаю, тут ничего описывать не надо, всё и так понятно.
VPK
Формат архивов игровых файлов, представленный в виде набора файлов, один из которых содержит описание расположения файлов, а остальные содержат непосредственно сами файлы. Корневой файл имеет имя вида "_dir.vpk", а остальные — "_.vpk".
Рассмотрим структуру корневого файла, начинающуюся со следующего заголовка:
Signature — всегда содержит 0x55aa1234.
PaksCount — количество архивов с содержимым файлов;
DirSize — размер данных с мета-информацией о файлах.
После заголовка следует иерархический список с элементами. Причем структура списка упорядочена по расширениям файлов и пути к ним.
То есть сперва идет NULL-terminated строка с расширением файла, потом NULL-terminated строка с путем, где такие файлы есть, после чего следует NULL-terminated строка имя файла (без расширения) с информацией о файле. Концом каждого уровня списка является пустая строка.
bsp
hl2/maps
map1
map2
map3
wav
sound/amb
amb1
amb2
sound/voice
voice1
voice2
Формат информации о файле:
CRC — контрольная сумма файла;
PreloadBytes — размер данных в начале файла, содержащихся в корневом файле после данной структуры;
ArchiveIndex — номер архива с данными файлами;
EntryOffset — смещение данных внутри архива;
EntryLength — размер данных.
Заключение
Настройка установленных программных продуктов – довольно утомительная процедура. А если учесть то, что в большинстве организаций идентичные настройки должны быть установлены не на одной машине, а по меньшей мере у нескольких сотрудников одного отдела, то если вы настраиваете приложения средствами графического интерфейса, весь этот процесс может затянуться надолго. Учитывая этот момент, можно сразу прийти к такому выводу, что желательно было бы попробовать автоматизировать процесс настройки программ, чтобы можно было централизованно управлять конфигурациями приложений ваших пользователей.
По большому счету, можно выделить несколько методов, позволяющих настраивать программные продукты, не прибегая к использованию пользовательского интерфейса. К таким методам можно отнести формирование сценариев для автоматизации определенных задач средствами какого-то скриптового языка, например Windows PowerShell или AutoIT, и последующее распространение таких сценариев средствами групповой политики. Помимо этого, если программные продукты генерируют определенные параметры в системном реестре операционных систем, вы можете централизованно предопределять такие настройки при помощи соответствующего элемента предпочтения групповой политики. В конце концов, некоторые программы могут для хранения своих настроек использовать конфигурационные файлы, изменяя которые вы можете вносить некоторые изменения в настройке таких продуктов.
Сегодня мы с вами остановимся именно на последнем описанном выше методе. Другими словами, из материала данной статьи вы узнаете о том, что собой представляют INI-файлы, каким образом они могут повлиять на настройку программ, а также, естественно, я расскажу о централизованной настройке INI-файлов. Но обо всем по порядку.
Локализация изменений настроек программ средствами INI-файлов
Прежде всего, следует загрузить этот программный продукт и проинсталлировать его. Это я описывать не буду, так как процедура более чем очевидная. Теперь, перед тем как начнем что-то изменять, откроем папку, в которой находятся конфигурационные файлы данной программы. Думаю, те, кто используют этот браузер по умолчанию, знают, что файл operaprefs.ini находится в папке %Userprofile%\AppData\Roaming\Opera\Opera. И кстати, этот файл можно конфигурировать еще и при помощи специальной конфигурационной страницы, которую можно вызвать непосредственно из браузера – это страница opera:config. Как видно на следующей иллюстрации, здесь есть множество параметров, доступных для настройки. Перед внесением каких-либо изменений, предлагаю забэкапить этот файл в какую-то отдельную папку с резервными копиями.
Рис. 2. Измененный ini-файл
Заменим измененный файл тем файлом, резервная копия которого была создана, и перейдем к конфигурированию INI-файлов средствами функциональных возможностей предпочтений групповой политики.
Узел предпочтений групповой политики «INI-файлы»
- Первым делом, в оснастке «Управление групповой политикой» создаем объект групповой политики, который будет называться «Opera INI-files Preferences» и будет отвечать исключительно за настройки INI-файла этого браузера, сразу связываем сам объект со всем доменом (изменения, правда, будут вноситься только лишь в конфигурацию пользователя, но для простоты сейчас будет выполнено именно так), ну а после этого уже откроем редактор управления групповыми политиками.
- Следовательно, находясь в узле «Конфигурация Windows» (Windows Settings) конфигурации пользователя, выберем узел «INI-файлы» (INI files), а затем, как видно из следующей иллюстрации, из контекстного меню, как обычно, выберем команду «Создать», а затем «Файл .ini» («Ini file»):
- В первом элементе предпочтения имя свойства должно быть Click to Minimize, а его значение должно быть 1;
- Во втором элементе предпочтения имя свойства — Cookies Directory, а значение — Cookies.
Рис. 6. Редактор управления групповыми политиками после создания всех элементов предпочтений
А вот теперь можно и проверить, удалось ли нам изменить существующий INI-файл оперы. Для этого следует обновить параметры политики при помощи утилиты gpupdate, а затем нужно локализовать искомый конфигурационный файл. Как видно на последней иллюстрации данной статьи, файл изменен, и в нем определены те значения, которые были указаны в соответствующих элементах предпочтений групповой политики:
Рис. 7. Измененный файл operaprefs.ini
Заключение
Из этой статьи вы узнали о том, что собой представляют и для чего нужны конфигурационные INI-файлы. На примере с браузером Opera было рассмотрено изменение настроек посредством одного из таких файлов. Ну а самое важное, о чем шла речь в текущей статье, так это то, что вы узнали о таком интересном элементе предпочтений групповой политики, как «INI-файлы». В сопутствующем примере было рассмотрено изменение трех свойств существующего конфигурационного файла.
Самое главное при работе с конфигурационными INI-файлами – это то, чтобы вы всегда сохраняли исходную версию таких файлов перед редактированием последних на тот случай, если перестараетесь с изменениями конфигурации. Откат ведь всегда проще и безболезненнее, нежели полная переустановка программного обеспечения :)
Что такое INI-файлы?
INI, они же Initialization-файлы, предназначены для хранения конфигурационных данных некоторых компонентов операционных систем Windows, а также приложений сторонних разработчиков. Были созданы такие файлы еще в первых версиях операционных систем Windows, но через какое-то время, а если говорить точнее, то в 1995 году, с появлением Windows 95 их потихоньку начал вытеснять системный реестр, и сейчас они используются практически только в приложениях сторонних разработчиков, которые не спешат менять способы хранения конфигурационных данных.
По сути, официальной спецификации формата этого файла в интернете нет или же его попросту очень сложно найти. Но тут можно не сильно волноваться, так как структура INI-файлов настолько проста и интуитивно понятна, что вручную создавать и конфигурировать такие файлы могут даже штатные пользователи, которые не то чтобы не разбирались в языках программирования, но которые даже ни разу не разбирались с HTML.
Данные конфигурационные файлы состоят из так называемых разделов, внутри которых располагаются сами параметры, именуемые свойствами. Такие файлы могут содержать как пустые строки, которые удобно использовать для того, чтобы INI-файлы были удобочитаемыми, так и комментарии в виде точки с запятой и даже заголовки разделов, заключаемые в квадратные скобки. Более чем очевидно, что в таких конфигурационных файлах нельзя использовать несколько различных свойств с одинаковыми именами, но я полагаю, что уже давно никто не совершает таких банальных ошибок. Также следует отметить, что при помощи обратного слэша вы можете объединять несколько строк, и они будут обрабатываться как одна целая строка.
Вот, в принципе, больше рассказывать о конфигурационных INI-файлах особо-то и нечего, поэтому потихоньку перейдем к практической части данной статьи. Перед тем как мы с вами начнем настраивать такие файлы, будет правильно, если будут рассмотрены сами файлы. Также будет рассказано о том, как они изменяются после внесения изменений при помощи диалоговых окон настроек самого программного обеспечения. В качестве примера возьмем немалоизвестный браузер Opera.
Читайте также: