Я создал приложение, которое хранит некоторые данные в файл 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
Во-первых, это не имеет ничего общего с C ++, так как код C ++, вероятно, работает. То же самое с XML, tinyxml и даже visual-c ++.
Похоже, что Windows перенаправляет доступ к записи в пользовательский «VirtualStore \ Program Files», но я оставлю это вам, чтобы изучить фактическую семантику этого. При запуске, когда нет пользователя, этот путь, очевидно, отличается, так как бывший пользователь не вошел в систему.
Теперь, чтобы получить фиксированный путь, вы можете использовать функцию GetModuleFileName()
чтобы узнать местоположение вашего исполняемого файла и использовать этот путь для поиска Smartmeter.xml. Однако проблема, с которой вы сейчас сталкиваетесь, заключается в том, что программы, установленные в «Program Files», волшебным образом не получают права на запись в каталог установки. Это необходимо для защиты одного пользователя от работы с данными другого пользователя.
Я думаю, что вы делаете, пишете программу, которая работает в фоновом режиме, которая будет называться «службой» под MS Windows. Что еще неясно, так это то, что вы хотите достичь с помощью этого файла, а также то, что вы планируете делать в целом, и это то, что решает будущие шаги. В любом случае, взгляните на возможности, которые предоставляют услуги, возможно, есть что-то, что соответствует вашим потребностям.
Других решений пока нет …