在Windows上存储应用程序运行时数据的正确文件夹是什么?

时间:2015-07-30 12:15:09

标签: windows

如果我的应用程序需要在运行时将一些数据存储到文件系统(例如,类似于SQLite数据库或缓存文件),那么将正确的文件夹存储在什么内容?< / p>

在* nix上,它会在/var之下,这很简单,但在Windows上,我似乎无法找到合适的推荐。

显然它不是Program Files,因为应用程序在运行时没有写入权限。它显然也不在任何系统文件夹中,例如Windows

如果它是用户运行的应用程序,则%APPDATA%似乎是正确的位置,但如果应用程序类似于以Network Service运行的服务(例如ASP),该怎么办?在IIS下运行的网络应用程序生成文件??

2 个答案:

答案 0 :(得分:1)

内置服务帐户实际上有可以使用的应用程序数据文件夹:

  • C:\Windows\ServiceProfiles\LocalService\AppData
  • C:\Windows\ServiceProfiles\NetworkService\AppData
  • C:\Windows\System32\config\systemprofile\AppData

但是,这意味着如果您更改服务运行的帐户,数据将不可用,并且还使系统管理员更难找到。

更好的选择是程序数据文件夹,在现代版本的Windows中通常可以找到

  • C:\ProgramData

在.NET中,您可以使用Environment.GetFolderPath检索Program Data文件夹的路径,即

System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

您应该在Program Data文件夹中创建一个具有适当名称的文件夹,例如您的应用程序和/或公司的名称。根据上下文,您可能还需要更改子文件夹的权限。

答案 1 :(得分:0)

在c#中你可以使用

System.IO.Path.GetTempPath()

为您提供路径:

C:\Documents and Settings\User\Local Settings\Temp\

对于非temproray文件,您可以使用:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

希望这就是你要找的东西