我目前在应用程序目录中存储了一个序列化的XML文件,该文件包含程序操作特定的所有更改(不是典型的系统或用户配置)。几周前,我们开始遇到无法正确保存的问题(请阅读my previous question)。长话短说,我们终于发现Windows 7(有时是Vista)在写入应用程序目录(特别是Program Files下的任何东西)时存在问题。现在,如果这是一个正常的配置文件,我只是将它存储在用户的APPDATA文件夹下,但这不正常。我们在我们自己的仪器上运行它,错误配置有99%的原因是客户在运行我们的软件时遇到问题。所以我们需要这个文件是可访问的,以便他们可以很容易地找到它并通过电子邮件发送给我们。 Appdata对于有经验的用户来说很难找到,更不用说非技术人员。我们也尝试以管理员身份运行它,并使文件夹权限开放(我们可以控制它运行的每台计算机;它永远不会运行在某个随机的人的计算机上)。但是,这些有时会起作用,有时不起作用。存储自定义配置文件的位置
最糟糕的部分是,当我写回文件时,它甚至不会抛出错误;它只是将它写入临时目录,该目录在某个未知时间点到期。几周后,我们的用户将遇到问题,配置文件全部混乱。
所以,我的问题是我应该在哪里存储这个文件,如果不是在Program Files中?无论如何,我是否应该将它放入APPDATA中,并制作一个小工具,以便在出现问题时自动通过电子邮件发送给我们。或者我可以将它保留在Program Files中,但可以更改某些特定权限或注册表项以允许它正常运行?
AppData是它的地方。另请参阅我的答案http://stackoverflow.com/questions/3219255/why-do-files-get-placed-c-users-usernameappdata-local-virtualstore-program-fil/3219276#3219276 – 2010-07-16 18:54:15
我知道这是正确的地方,但是我应该如何让技术上不识字的用户在发生问题时向我们发送文件? – drharris 2010-07-16 18:57:08
@ 0xA3理想情况下,我可以修复我们的软件以及我们软件中使用的9-12硬件供应商和驱动程序中的所有错误,但是我不会问这个问题。 ;)当用户发送配置文件时,我能够处理每个导致问题的情况,但是很多事情我们无法预见。例如,将一个设备的参数设置为256会导致溢出,即使驱动程序和pinvokes显示它应该高达65k。踢球者257表现良好。 – drharris 2010-07-16 19:01:16