我的 winform 应用程序使用 xml 文件来存储数据,我应该将它们存储在哪里以便 Vista 用户可以写入数据?
Thanks
Use the Environment.GetFolderPath http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath.aspx以独立于操作系统的方式获取最合适的文件夹。
特别是,您需要以下 SpecialFolder 值之一:
-
ApplicationData
- 如果文件是漫游的、按用户分配的并且仅供应用程序使用,并且不代表用户可能关心的文档。
-
LocalApplicationData
- 如果文件是非漫游的、按用户的且仅供应用程序使用且不代表用户可能关心的文档。
-
CommonApplicationData
- 如果文件是漫游的,对所有用户来说都是通用的,并且仅供应用程序使用,并且不代表用户可能关心的文档。NOTE:在 Vista 上这映射到C:\ProgramData
,默认情况下对于普通用户来说是只读的(因为更改其中的文件可能会影响管理员使用的程序的行为)。您可以显式更改应用程序子文件夹的权限,或选择其他选项之一。
-
MyDocuments
- 如果文件是针对每个用户的并且代表文档。
请注意,没有SpecialFolder
枚举值如CommonDocuments
这将代表机器范围的文档存储,即使有一个文件夹旨在充当一个文件夹(C:\Documents and Settings\All Users\Documents
在 XP 和C:\Users\Public\Documents
在 Vista 上)。如果您想写入这些位置,您必须自己找到操作系统版本并选择适当的文件夹。
内部Environment.GetFolderPath
使用 Win32 APISHGetFolderPath http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx。使用的枚举SHGetFolderPath
为您提供其他几个特殊文件夹(包括通用文档)的众所周知的位置。你可以直接使用SHGetFolderPath
;你可以找到它p/调用定义 http://www.pinvoke.net/default.aspx/shell32/SHGetFolderPath.html以及相应的CSIDL 枚举定义 http://www.pinvoke.net/default.aspx/shell32/CSIDL.html在 PInvoke.net 上。
您还可以使用IsolatedStorage http://msdn.microsoft.com/en-us/library/3ak841sy.aspx。但是,它是不可漫游的、每用户的、配额有限的,并且用户无法从 Windows 资源管理器轻松访问。因此,它实际上是一个中/低信任度,相当于SpecialFolder.ApplicationData
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)