powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Некорректная работа с файлом
19 сообщений из 19, страница 1 из 1
Некорректная работа с файлом
    #39150872
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть дистрибутив, собранный в "Advanced Installer" (но это, думаю, не важно). Дистрибутив (как это часто бывает) в "Program Files (x86)" распаковывает программу, написанную в .NET, и необходимые ей файлы, в том числе некий файл настроек (например, "C:\Program Files (x86)\Proga\Settings"). Одна из возможностей программы - это считывать файл настроек и перезаписывать его. Но осуществляется это очень странно! Запись происходит успешно, без каких-либо ошибок простым способом:
File.WriteAllText(@"C:\Program Files (x86)\Proga\Settings", fileTextBuilder.ToString(), Encoding.UTF8);
Но по факту файл не меняется! Хотя программа при повторном его чтении (тоже простым способом):
string[] settings = File.ReadAllLines(@"C:\Program Files (x86)\Proga\Settings", Encoding.UTF8);
получает данные с учётом внесённых ей раннее изменений!
Причём в режиме отладки программа считывает реальное содержимое файла, а скомпилированная программа - данные с учётом внесённых ей изменений. От куда она их берёт!?
Написал отдельное Console-приложение, которое просто считывает этот файл:
string s = File.ReadAllText(@"C:\Program Files (x86)\Proga\Settings");
Оно ведёт себя иначе: в режиме отладки при запуске как "Release", данные считываются действительные, при запуске как "Debug" - с учётом изменений. При запуске скомпилированного exe - во всех случаях реальные данные.
Может кто знает, что за аномалия такая? Она меня с ума сводит!
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39150908
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей87, чето имхо не договариваете, если файл лежит под жопой , то у релиза и отладки разные файлы, отсюда и поведение такое.
и какой умник будет писать велосипеды, когда есть стандартные сеттинги из коробки, ведут себя к стати также по разному..
и как же вы умудрились инстанс релизной проги в дебаг загнать?
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151084
VAlexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей87,
Ваша "магия" скорее всего связана с тем, что пользователь, запустивший программу, не имеет прав на изменение файлов в каталоге "C:\Program Files (x86)\...". И это справедливо не для всех версий Windows (Windows 7+ точно нельзя).
Как вам уже посоветовали, лучше использовать стандартные средства для хранения настроек программы.
Там есть свои плюсы и минусы, но в большинстве случаев их достаточно.
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151236
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Вы меня, похоже, не поняли. Да и я вас не совсем понимаю.
"файл лежит под жопой" - это, Вы, где имеете в виду файл лежит?
"у релиза и отладки разные файлы" - файл, с чтением и записью которого проблемы, один, и полный путь к нему "C:\Program Files (x86)\Proga\Settings". И я за 10 лет практики в первый раз сталкиваюсь с тем, что при чтении одного и того же файла, программы выдают разные результаты (кодировка не при чём)! И проблема именно в этом. Судя по всему, где-то что-то кэшируется. Но как и зачем понять не могу. Так как, даже при удалении этого файла, программа продолжает успешно и читать из него и писать в него. То есть только при первой установке программа подтягивает действительные данные из этого файла, а дальше меняет и читает уже что-то другое, хотя обращается всё по тому же пути.
"и какой умник будет писать велосипеды, когда есть стандартные сеттинги из коробки" - Вы имеет в виду config-файлы, поддерживаемые средой? Настройки, хранящиеся в "C:\Program Files (x86)\Proga\Settings" задаются в процессе установки программы из дистрибутива. Мне было проще сделать, чтобы дистрибутив создавал новый файл со своими настройками, чем перезаписывал config-файл программы. Но я на 90% уверен, что даже если я и потрачу кучу времени, чтобы переделать инсталятор, и он будет переписывать config-файл, то та же самая проблема повторится и с config-файлом.
"и как же вы умудрились инстанс релизной проги в дебаг загнать?" - вот этот вопрос вообще не понял! Есть программа, скомпилирована под "Release", с помощью "Advanced Installer" сделан дистрибутив, который эту программу устанавливает вместе со злосчастным файлом "Settings". Всё. Я никакой "инстанс" ни в какой "дебаг" не "загонял".
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151250
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей87,
ну за десть лет то можно почитать про settings и где хранятся эти файлы
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151255
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VAlexey,
Да, похоже, проблема из-за прав доступа происходит. По крайней мере, если запустить программу от имени администратора, то считывает она реальные данные, а если просто запустить, то какие-то кэшированные. Блин, но почему она просто не выдаёт исключение при попытке читать из этого файла!? А, тем более, при попытке записи в него! Ведь команда
File.WriteAllText(@"C:\Program Files (x86)\Proga\Settings", fileTextBuilder.ToString(), Encoding.UTF8);
проходит успешно. Только данные хрен знает куда записываются и хрен знает потом от куда считываются.
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151261
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Ну ведь я Вам написал:
Вы имеет в виду config-файлы, поддерживаемые средой? Настройки, хранящиеся в "C:\Program Files (x86)\Proga\Settings" задаются в процессе установки программы из дистрибутива. Мне было проще сделать, чтобы дистрибутив создавал новый файл со своими настройками, чем перезаписывал config-файл программы. Но я на 90% уверен, что даже если я и потрачу кучу времени, чтобы переделать инсталятор, и он будет переписывать config-файл, то та же самая проблема повторится и с config-файлом.
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151264
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей87,
ну еще скажите что обфускатором по ней потоптались, и что код вскрыть рефлектором невозможно...
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151266
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
вы бы хоть инсталятор выложили, такая интрига создалась что работать уже не вмоготу
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151268
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Нет, обфускацую не делал. И вскрыть рефлектром можно, конечно Но не пойму к чему это?
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151274
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Согласен, в ближайшее время постараюсь подготовить дистрибутив с простенькой программой, которая просто читает и пишет в этот файл. Реальный дистрибутив не имею права выкладывать :)
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151276
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей87,
Очень просто, если мне не понятно поведение - я смотрю код, а не гадаю на кофейной гуще, да и вообще полезно послушать
чужие мысли ( почитать чужой код)
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151279
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей87,
в вашей программе используются типичные settings из коробки, по крайней мере анамнез ( что вы описали)
сто процентов на них указывает.
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151288
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Вы не правы. Программа писал я, и уверяю вас, что это не "типичный settings из коробки". В третий раз напишу: "Settings" создаётся дистрибутивом (его тоже я писал) при установке.
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151290
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычная виртуализация файлов. К сеттингсам отношения не имеет.

Ищи записанный файл с настройками в профиле пользователя.
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151384
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,

Большое спасибо!
Да этот альтернативный файл, с которым работала программа, запущенная не под администратором, нашёлся в директории "AppData\Local\VirtualStore\Program Files (x86)" моей учётной записи. Но почему программа при выполнении команды:
File.WriteAllText(@"C:\Program Files (x86)\Proga\Settings", fileTextBuilder.ToString(), Encoding.UTF8);
пишет в файл "AppData\Local\VirtualStore\Program Files (x86)\Settings"; а потом при выполнении команды:
File.ReadAllText(@"C:\Program Files (x86)\Proga\Settings");
читает из файла "AppData\Local\VirtualStore\Program Files (x86)\Settings";
я не пойму!
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151762
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей87Siemargl,

Большое спасибо!
Да этот альтернативный файл, с которым работала программа, запущенная не под администратором, нашёлся в директории "AppData\Local\VirtualStore\Program Files (x86)" моей учётной записи. Но почему программа при выполнении команды:
File.WriteAllText(@"C:\Program Files (x86)\Proga\Settings", fileTextBuilder.ToString(), Encoding.UTF8);
пишет в файл "AppData\Local\VirtualStore\Program Files (x86)\Settings"; а потом при выполнении команды:
File.ReadAllText(@"C:\Program Files (x86)\Proga\Settings");
читает из файла "AppData\Local\VirtualStore\Program Files (x86)\Settings";
я не пойму!

https://support.microsoft.com/en-us/kb/927387, раздел More information.
Вкратце - операционная система обеспечивает такую работу. Скорее всего сделано для обеспечения совместимости приложений, которые писались во времена "до UAC".
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39151819
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учебник

Алексей Федоров
Обеспечение
совместимости приложений в
Microsoft® Windows Vista® и Windows® 7
Руководство для разработчиков

download.microsoft.com/documents/rus/windows/v7dev.pdf
...
Рейтинг: 0 / 0
Некорректная работа с файлом
    #39153249
Андрей87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, всем!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Некорректная работа с файлом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]