Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отследить запись в файл 
V
    Опции темы
victoria1
  Дата 6.9.2012, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.9.2012

Репутация: нет
Всего: нет



Имеется крупный и сложный код под win  (более 500 файлов в исходниках). Результат работы этой программы пишется в файл в домашнюю директорию запустившего пользователя, в папку application data. и этот путь записи где-то прописан в коде программы, не в каких-либо конфигфайлах. как найти, отследить место в коде где устанавливается папка записи? 
Поиском ключевых слов вроде application data и др. во всех файлах исходника это сделать не удалось.
Найти это нужно с целью изменить папку записи на папку из которой запускается программа.

PM MAIL   Вверх
math64
Дата 6.9.2012, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Там где пишется должно быть что-то подобное: [f]open - открытие файла; [f]write или fprintf или out << запись в файл; [f]close - закрытие файла.
Но имя файла может задаваться где-нибудь с совершенно другом месте, например в readConfig();
PM   Вверх
bsa
Дата 6.9.2012, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(victoria1 @  6.9.2012,  15:18 Найти цитируемый пост)
Найти это нужно с целью изменить папку записи на папку из которой запускается программа.
зачем?!? Такие программы (пишущие в каталог установки) имеют серьезные проблемы при работе в последних Windows. Система запрещает это делать без особых привилегий.

Я уверен, что путь не прошит жестко в коде программы. Он берется из реестра текущего пользователя.
На твоем бы месте, я начал бы не с поиска имени папки, а с поиска места записи в этот файл. Затем, зная как называется дескриптор файла, я бы по нему нашел место, где он создается. А там уже рядом должно быть и открытие файла (генерация имени файла).
PM   Вверх
victoria1
Дата 6.9.2012, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.9.2012

Репутация: нет
Всего: нет



Цитата

Я уверен, что путь не прошит жестко в коде программы. Он берется из реестра текущего пользователя.

Программа консольная и работает без установки. И похоже что не использует реестр. На любой машине без установки работает. состоит из одного exe файла.
PM MAIL   Вверх
bsa
Дата 6.9.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(victoria1 @  6.9.2012,  16:32 Найти цитируемый пост)
И похоже что не использует реестр
На каком основании сделан такой вывод?

Добавлено через 11 минут и 45 секунд
Кстати. Мы тебе не сможем больше ничего полезного подсказать. Найди место записи в файл (если файл текстовый, то ищи по фразам, что программа туда пишет), а затем место создания этого файла. больше ничем не можем быть тебе полезными.
PM   Вверх
victoria1
Дата 6.9.2012, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.9.2012

Репутация: нет
Всего: нет



Нашлось! 
Там путь формируется на основе:
Код

getenv("USERPROFILE")

Но сразу возник вопрос, а в какой переменной окружения windows содержится путь исполняемого через консоль файла? т.е. аналог pwd unix. 
как этот путь указать?
PM MAIL   Вверх
bsa
Дата 6.9.2012, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



изучай GetModuleFileName()
PM   Вверх
bems
Дата 7.9.2012, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



lpCmdLine из WinMain начинается с имени файла

Это сообщение отредактировал(а) bems - 7.9.2012, 13:25


--------------------
Обижено школьников: 8
PM MAIL   Вверх
victoria1
Дата 8.9.2012, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.9.2012

Репутация: нет
Всего: нет



Всем спасибо. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0771 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.