如果我的应用程序需要在运行时将一些数据存储到文件系统(例如,类似于SQLite数据库或缓存文件),那么将正确的文件夹存储在什么内容?< / p>
在* nix上,它会在/var
之下,这很简单,但在Windows上,我似乎无法找到合适的推荐。
显然它不是Program Files
,因为应用程序在运行时没有写入权限。它显然也不在任何系统文件夹中,例如Windows
。
如果它是用户运行的应用程序,则%APPDATA%
似乎是正确的位置,但如果应用程序类似于以Network Service
运行的服务(例如ASP),该怎么办?在IIS下运行的网络应用程序生成文件??
答案 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)
希望这就是你要找的东西