2016-06-26 82 views
0

我有一个基于QT的应用程序,它由一个配置文件(这是一个带扩展名cfg的文本文件)和一个随应用程序一起安装的SQLite数据文件组成。 代码验证配置文件是否存在于安装目录中。在Windows上安装QT应用程序C驱动器

我有这个奇怪的问题,当运行给定的cfg文件没有更新,但配置保存在其他地方。即使我删除了cfg文件,应用程序仍然有效。这就好像操作系统正在制作配置文件和数据库文件的副本,并继续更新它们而不是实际的文件。

如果应用程序安装在另一个驱动器(如d::)中,则此行为不存在。另外,如果我以管理员身份运行应用程序,应用程序将编辑并使用存储在C:驱动器中的配置文件。 对于安装在C驱动器中的可编辑文件,是否存在此类高速缓存?如果是的话该如何解决它。提前致谢。

+1

既然我们不知道,你的代码是什么样的,我们不能帮你。如果您的配置文件使用INI文件API,那么读取和写入的机会将被重定向到注册表。找到最简单的方法是运行[进程监视器](https://technet.microsoft.com/en-us/sysinternals/bb896645),然后查看您的应用程序访问的内容,并结合单步执行代码。你有Qt源代码的原因。 – IInspectable

回答

1

这就好像os正在制作配置文件和datbase文件的副本并不断更新它们而不是实际的文件。

这可能的确如此。 Windows Vista及更高版本引入了Windows Virtual Store的概念,以防止应用程序写入可能有害的位置。为了解释,参见例如http://portableapps.com/node/35519

+0

非常感谢。所以我想我应该在第一次启动时将配置文件和数据库文件移动到另一个位置。有没有其他一般的方法来做到这一点。问题在于重新安装。虚拟商店中的旧文件仍被考虑在内。 –

+0

如果您的程序安装正确,您应该将设置存储在'%APPDATA%'子文件夹中,就像已安装程序的建议一样。然后,卸载可以随意离开或删除该数据。 –

相关问题