Открыть список
Как стать автором
Обновить

Комментарии 38

Обновление прораммы удалит настройки. Это ещё один минус.
Жуткое извращение. Масса минусов:
1. Свободное место на диске не соответсвует ёмкости. Сразу появляется подозрение на руткиты.
2. Программа зависает, оставляя настройки в некорректном состоянии. Лечится только переустановкой.
3. Поделившись с другом прикольной программой, пользователь незаметно для себя делится паролями.
1. По поводу свободного места. Настройки весят мизер, так что этого даже и заметно не будет.
2. А с чего это программа при зависании оставит настройки в некорректном состоянии? Даже если что-то испортится, можно запросто очистить настройки. (работа с потоками происходит так же как и с обычными файлами)
3. Ну во первых пароли в открытом виде давно никто не хранит, а во вторых, для того, что бы этот самый пароль (зашифрованный) вытащить, придется повозиться.
Ну а вообще я писал, что этот способ удобен, если приложение не большое и состоит из одного исполняемого файла.
1. Многие сканеры руткитов и на мизер реагируют.
2. Программы иногда зависают, это правда жизни. Представьте, что Вы установили в игре некорректное разрешение экрана, и пришлось её аварийно завершить. Больше Вам её запустить не удастся, пока не исправите найстройку. В случае конфигурационного файла или реестра проблема легко решаема.
3. Ну, если программа может расшифровать пароль перед его использованием, почему хакер не сможет?
1. Я думаю что сканеры руткитов должны учитывать стандартные особенности NTFS. И то что в файлах могут использоваться потоки.
2. Ну для таких больших программ, как игры, я думаю что данный метод не очень подходит. И тем более я считаю, что разработчик сам должен позаботиться о том, что бы подобные случаи вообще не могли произойти.
3. Ну чаще всего в таких файлах хранятся не сами пароли, а хэш функции от них. А проверка идет от того пароля, которые вводит пользователь. Совпадает ли хэш функция введенного пароля, и та хэш функция, что хранится в настройках.
1. Ладно, уговорили
2. Игры и небольшие бывают
3. Мессенджеры, например, хранят именно пароли, и у пользователя ничего не спрашивают
1. Многие сканеры руткитов и на мизер реагируют.

Касперский в потоках хранит свои данные для каждого файла (технология проверки только изменившихся файлов), еще ни одна проверка не заподозрила в этих данных руткит, так что тут более-менее безпроблемно.
2. Программы иногда зависают, это правда жизни. Представьте, что Вы установили в игре некорректное разрешение экрана, и пришлось её аварийно завершить. Больше Вам её запустить не удастся, пока не исправите настройку. В случае конфигурационного файла или реестра проблема легко решаема.
— Чего это? Зная имя потока можно открыть его например в блокноте и поправить.
2. А зачем туда что-то писать постоянно и на каждом шаге? При запуске прочитали, при закрытии (или сохранении) — записали. Таких ситуацией быть не должно в нормальном софте.
В нормальном софте много чего не должно быть, что тем не менее встречается в реальности. Например, любое оконное приложение теоретически можно закрыть, нажав на крестик (или красный кружочек, или что там ещё бывает). Тем не менее, менеджеры задач, позволяющие прибить зависшее приложение, весьма популярны.
Да, и программы обычно в C:\Program Files ставятся, и обычный пользователь ничего не сможет сохранить в настройках.
Но, вообще говоря, идея и техника использования многопоточных файлов интересны сами по себе.
Думаю, им есть более подходящие применения.
кто только не пробовал придумать им применения, и антивирусники даже (у Каспера такая функция была — он хранил данные о скане файла в альтернативном потоке)
ну к примеру FlylinkDC++ хранит TTH расшаренных файлов в потоках NTFS.
Удобная функция — сильно ускоряет повторное перехэширование файлов при перемещении их в другое место.
Таким образом, можно держать несколько копий программ с разными настройками (причем, только тогда, когда программы в разных директориях).
можно передавать в параметрах запуска имя конфига.
эти файлы настроек как груз висят над душой.
не вижу ничего страшного в одном файле рядом с программой. Этот подход не обладает кучей минусов, как использование потоков, и при этом гораздо прозрачнее для пользователя. Плюс в случае, если программа даже не сможет стартовать с кривыми настройками, их легко можно будет потереть руками. Штатные средства венды ЕМНИП не умеют нормально работать с потоками.
я бы хотел увидеть аргументы от несогласных. Не думал, что на хабре столько людей, которые сразу бегут какать в карму при виде комментария, не совпадающего с их личным мнением.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Вот и да. Давайте уже делать как нибудь более стандартно, зоопарк — плохо.
Это писалось, как альтернатива, а не как призыв к действию. Мелких утилиты (у которых кстати файлы конфигураций могут быть одинаково названы) смогут жить в одном при спокойно себе в одной папочке, никому не мешая.
НЛО прилетело и опубликовало эту надпись здесь
Я бы посмотрел, как вы попытаетесь записать в запущенный экзешник что-либо.
НЛО прилетело и опубликовало эту надпись здесь
Я не говорю, что это не возможно… просто для того, что бы это реализовать, потребуется достаточно много усилий… А потом в один прекрасный момент «лавочку закроют» которая позволяла это реализовать. И придется придумывать что-нибудь другое.
НЛО прилетело и опубликовало эту надпись здесь
Потому что это стандартная часть файловой системы. Которую Microsoft реализовала, для того, что бы обеспечить совместимость например с форматом файлов пользователей MAC. Кстати первая такая поддержка была еще в NT 3.1. И я думаю, что раз они это сделали специально. И до сих пор поддерживают, то пока есть NTFS, будут и потоки.
А вообще идея сначала была примерно такой же. Была программа у которой был один единственный настраиваемый параметр (bool). и не хотелось из-за такой мелочи таскать еще один файл с настройкой. Хотел изменять в самом файле тот байт, где хранится инициализирующее значение. Но увы.
Против самой идеи ничего не имею, она хороша, как альтернатива. Зато имею против потоков. Не стоит их использовать, пока нет стандартных средств в ОС для работы с ними.
Чем не стандарты habrahabr.ru/blogs/windows/46990/?
Единственное для получения списка потока приходится чуть чуть изворачиваться.
Я имел в виду средства, доступные обычным пользователям (через ГУИ), как ини-файлы и реестр.
Реестра вам, значит, мало…
НЛО прилетело и опубликовало эту надпись здесь
А если скопировать программу на флешку? Там ведь FAT/FAT32. Программа просто работать не будет. Или будет, но не сможет сохранять настройки.
Уже когда-то писал про это: habrahabr.ru/blogs/windows/46935/
В том топике в комментариях разложили все по полочкам и выяснили, когда уместно пользоваться этими самыми потоками.
Помнится во времена DOS встречал пару раз когда программа прописывала свои настройки в сам исполняемый файл — это получается гораздо переносимее, если уж так захотелось хранить всё вместе.

И откуда такая уверенность, что ini находится исключительно вместе с программой, а не в профиле пользователя? ;-)

«чтобы» и «небольшая» пишутся слитно (в твоём случае)
А как же права доступа? У каждого пользователя свои настройки и они не должны быть доступны другим. Нормально это решается хранением их в домашней папке юзера.
Я понимаю, название блога обязывает)
Жопу чесать иногда легче через гланды.
Я встречал небольшие программы (с небольшим кол-вом настроек), которые хранили настройки прямо в имени исполняемого файла :) Что-то вроде «program_1_2_3.exe». Конечно, это были пустячковые утилиты для запуска вручную из папки. В NT системах можно изменять имя исполняемого файла прямо в процессе работы, конечно, если есть соответствующие права.

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