从AppData更改存储文件夹

时间:2015-09-24 17:25:04

标签: c# .net

我差不多用Windows Forms和C#创建了我的第一个应用程序。它是一个简单的预算应用程序,它依赖于写入文本文件以进行持久存储,并依赖于.csv文件作为支出日志,以便用户可以使用excel打开.csv进行一些简单的分析。在我的程序中,用于这些的文件路径只是@"AccountStorage.txt."我的调试和发布版本没有问题,并且这些文件可以在应用程序文件夹中轻松访问。

但是,当我使用发布向导并以这种方式构建和安装时,这些文件将隐藏在%appdata%/apps/2.0/(random numbers and letters)中。有没有办法阻止Visual Studio将这些文件隐藏在那里,而是将它们放在一个易于访问的地方?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

考虑使用“我的文档”创建的任何个人文档   用户希望轻松访问的应用。你可以像那样走这条路   所以:   System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFold er.MyDocuments)   “MyAppName”);

弗拉德的答案很棒。对不起,我的代表太低了,不能把它标记为正确的!

答案 1 :(得分:0)

只是为了补充答案,如果您的APP不在“管理模式”下运行,使用SpecialFolder来保存数据非常重要。

如果您以“Invoked”(而不是Admin)的身份运行您的应用程序,当您尝试将数据保存在PROGRAM-FILES文件夹中时,您可能会收到错误--Windows有时会拒绝写入此区域,特别是如果你使用“全路径”寻址(如“c:\ ProgramFiles \ MyApp \ Somefile.txt”)。

因此,像Vlad推荐的那样,或者在我的建议中使用一些COMMON或USER区域来实现数据可能很有趣。两者之间的区别在于,在COMMON区域中,所有登录都将看到该文件,而在USER区域中,每次登录都只会看到自己的文件。

语法为:

公共区域:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) & "\YourAppName"

USer Area

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\YourAppName"

此外,您还有其他方面可以执行此操作(请参阅Environment.SpecialFolder的所有选项),您也可以使用PATH.COMBINE创建上面以litteral模式显示的链接(添加斜杠和应用程序名称)。 / p> 祝你好运