windows - 我的 winform 应用程序使用 xml 文件来存储数据,我应该将它们存储在哪里以便 Vista 用户可以写入它们?

标签 windows xml winforms

我的 winform 应用程序使用 xml 文件来存储数据,我应该将它们存储在哪里以便 Vista 用户可以写入它们?

谢谢

最佳答案

使用 Environment.GetFolderPath以独立于操作系统的方式获取最合适的文件夹。

特别是,您需要以下 SpecialFolder 值之一:

  • ApplicationData - 如果文件是漫游的,每个用户,并且仅供应用程序使用,不代表用户可能关心的文件。
  • LocalApplicationData - 如果文件是非漫游的、针对每个用户的并且仅供应用程序使用并且不代表用户可能关心的文件。
  • CommonApplicationData - 如果文件是漫游的,对所有用户都是通用的,并且仅供应用程序使用,不代表用户可能关心的文件。 注意: 在 Vista 上,它映射到 C:\ProgramData,默认情况下对普通用户来说是只读的(由于更改那里的文件可能会影响管理员使用的程序的行为)。您可以明确更改应用子文件夹的权限,也可以选择其他选项之一。
  • MyDocuments - 如果文件是针对每个用户的并且代表文档。

请注意,没有像 CommonDocuments 这样的 SpecialFolder 枚举值代表机器范围的文档存储,即使有一个文件夹旨在像一个服务(C:\Documents and Settings\All Users\Documents 在 XP 和 C:\Users\Public\Documents 在 Vista 上)。如果要写入这些位置,您将必须自己找到操作系统版本并选择适当的文件夹。

内部 Environment.GetFolderPath 使用 Win32 API SHGetFolderPath . SHGetFolderPath 使用的枚举为您提供了几个其他特殊文件夹(包括 Common Documents)的众所周知的位置。你可以直接使用SHGetFolderPath;你可以找到它的 p/invoke definition和相应的CSIDL enum definition在 PInvoke.net 上。

您还可以使用 IsolatedStorage .但是,它是不可漫游的、针对每个用户的、配额有限的并且用户不容易从 Windows 资源管理器访问。因此,它实际上是等同于 SpecialFolder.ApplicationData 的中/低信任度。

关于windows - 我的 winform 应用程序使用 xml 文件来存储数据,我应该将它们存储在哪里以便 Vista 用户可以写入它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588207/

相关文章:

windows - 将输出重定向到 VAR 指定的文件名

java - 如何杀死 Java 进程并执行关闭钩子(Hook)

JavaScript 和 XML Dom - 嵌套循环

c# - 如何使用半透明选择器选择屏幕上任意位置的颜色?

c# - WPF 相当于 Winform 的 KeyEventArgs - 使用特定键调用 KeyDown 事件

vb.net - 使文本适合 VB.net Windows 窗体中的文本框

windows - 如何在 Windows 上安装 Git - 下载位置和版本

windows - 如何通过cmd复制文件夹?

java - 我不断收到数据绑定(bind)错误,但不确定原因或如何修复它

java - 如何使用 Thymeleaf 模板引擎将带有可变参数的处理指令注入(inject)到 XML 中