XML-файл сохраняются в два разных пути

Я создал приложение, которое хранит некоторые данные в файл XML. Проблемы связаны с путем сохранения XML. Использую TinyXML для сохранения данных в vc ++.

Когда я развертываю это приложение, оно устанавливается в "C:\Program files(x86)\applicationname " и когда я запускаю приложение, файл XML сохраняется в

"C:\Users\UserName\AppData\Local\VirtualStore\Program Files (x86)\ApplicationName ".

Я сделал это приложение для работы при запуске системы. Поэтому, когда я перезапускаю это приложение,
XML-файл хранится по другому пути "C:\Users\UserName\AppData\Local\VirtualStore\windows\sysWOW64"

Я хочу, чтобы мой XML был сохранен в пути, куда я установил или должен быть сохранен в appdata, имя приложения

Что я должен сделать, чтобы хранить файл XML в одном месте, где установлено приложение?

doc.SaveFile( "test.xml" ); // xml saving code in tinyxml library

0

Решение

Во-первых, это не имеет ничего общего с C ++, так как код C ++, вероятно, работает. То же самое с XML, tinyxml и даже visual-c ++.

Похоже, что Windows перенаправляет доступ к записи в пользовательский «VirtualStore \ Program Files», но я оставлю это вам, чтобы изучить фактическую семантику этого. При запуске, когда нет пользователя, этот путь, очевидно, отличается, так как бывший пользователь не вошел в систему.

Теперь, чтобы получить фиксированный путь, вы можете использовать функцию GetModuleFileName() чтобы узнать местоположение вашего исполняемого файла и использовать этот путь для поиска Smartmeter.xml. Однако проблема, с которой вы сейчас сталкиваетесь, заключается в том, что программы, установленные в «Program Files», волшебным образом не получают права на запись в каталог установки. Это необходимо для защиты одного пользователя от работы с данными другого пользователя.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]