Xml文件保存在两个不同的路径中

时间:2013-01-20 07:45:24

标签: c++ xml visual-c++ windows-installer tinyxml

我创建了将一些数据存储到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

1 个答案:

答案 0 :(得分:0)

首先,这与C ++无关,因为C ++代码可能正在运行。与XML和tinyxml甚至visual-c ++相同。

似乎windows将这些写访问重定向到用户特定的“VirtualStore \ Program Files”,但我会留给你研究它的实际语义。在启动时,当没有用户时,此路径显然不同,因为前一个用户未登录。

现在,为了获得固定路径,您可以使用函数GetModuleFileName()找出可执行文件的位置,并使用该路径找到Smartmeter.xml。但是,您现在面临的问题是安装在“Program Files”下的程序不会神奇地获得对其安装目录的写访问权限。这是为了保护一个用户不要弄乱另一个用户的数据。

我认为你正在做的是编写一个在后台运行的程序,在MS Windows下称为“服务”。目前尚不清楚的是你想用这个文件实现什么,以及你计划整体做什么,这些都决定了未来的步骤。无论如何,请看一下服务提供的可能性,也许有适合您需求的东西。