我的winform应用程序使用xml文件来存储数据,我应该在哪里存储它们以便Vista用户可以写入它们?
谢谢
使用它Environment.GetFolderPath
以独立于操作系统的方式获取最合适的文件夹.
特别是,您需要以下SpecialFolder值之一:
ApplicationData
- 如果文件是漫游的,每个用户并且仅供应用程序使用,并且不代表用户可能关心的文档.
LocalApplicationData
- 如果文件是非漫游的,每个用户并且仅供应用程序使用,并且不代表用户可能关心的文档.
CommonApplicationData
- 如果文件是漫游的,则对所有用户都是通用的,仅供应用程序使用,并不代表用户可能关心的文档.注意:在Vista上映射到C:\ProgramData
,对于常规用户,默认情况下是只读的(由于更改其中的文件可能会影响管理员使用的程序的行为).您可以显式更改应用程序子文件夹的权限,也可以选择其他选项之一.
MyDocuments
- 如果文件是每个用户并代表文档.
请注意,没有SpecialFolder
像CommonDocuments
这样的枚举值代表机器范围的文档存储,即使有一个文件夹打算像一个文件夹(C:\Documents and Settings\All Users\Documents
在XP和C:\Users\Public\Documents
Vista上).您必须自己查找操作系统版本,如果要写入这些位置,请选择相应的文件夹.
内部Environment.GetFolderPath
使用Win32 API SHGetFolderPath
.使用的枚举SHGetFolderPath
为您提供了其他几个特殊文件夹(包括公共文档)的众所周知的位置.你可以直接使用SHGetFolderPath
; 你可以在PInvoke.net上找到它的p/invoke定义和相应的CSIDL枚举定义.
你也可以使用IsolatedStorage
.但是,对于每个用户而言,它是不可漫游的,配额有限,用户无法从Windows资源管理器轻松访问.因此,它实际上是中等/低信任等价物SpecialFolder.ApplicationData
.