0

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

1 回答 1

0

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

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

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

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

于 2013-01-20T09:00:52.717 回答