【问题标题】:Store user-specific data under windows在windows下存储用户特定的数据
【发布时间】:2018-02-14 09:30:07
【问题描述】:

我有一个需要存储用户特定数据的应用程序。目前我使用用户配置文件来存储数据:

C:\Users\<username>\

现在我遇到的问题是数据变大并且一些用户收到错误,因为文件大小超过了用户配置文件大小。

不能更改用户配置文件大小。

所以我需要以下解决方案之一: 1. 以某种方式将数据/文件夹标记为“保持本地” 2.使用另一个存在于用户特定的windows中的文件夹 3.创建一些本地文件夹,并将其标记为“这仅适用于用户xyz”

这三种解决方案是否可用?

(如果这很重要,则客户端在 Windows 7 及更高版本上)

确定文件夹的代码:

  string userPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
  string folder = Path.Combine(userPath, PlaylistsFolder);

【问题讨论】:

  • 如果您能向我们展示您的代码,那就太好了。
  • 漫游和本地配置文件有不同的位置。您将数据存储在哪里? 本地用户数据也有限制吗?

标签: c# windows


【解决方案1】:

如果您有权在非用户特定位置创建数据,则可以应用解决方案三,方法是创建根文件夹,然后根据登录的用户名创建子文件夹。不幸的是,如果存储的数据是敏感数据,这会带来问题,那么您应该进行一些加密以确保用户无法访问和修改其他用户的数据。

您可以像这样检索登录用户的名称:

string userName = null;
using (System.Security.Principal.WindowsIdentity identity = 
        System.Security.Principal.WindowsIdentity.GetCurrent())
{
   userName = identity.Name;
}

【讨论】:

    【解决方案2】:

    在我的脑海中,您能否在您的应用程序 %ProgramData% 文件夹中创建一个新的用户特定文件夹,然后在 c:\User\[username] 文件夹中创建一个符号链接到它?

    关于符号链接,请参见此处: https://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/

    【讨论】:

      【解决方案3】:

      通过将Environment.SpecialFolder.UserProfile 替换为Environment.SpecialFolder.LocalApplicationData 解决了这个问题

      【讨论】:

      • 这是建议答案的 50% 重复。只有 50%,因为了解 LocalApplicationData 没有这个问题是解决方案的一部分。这就是为什么我建议为后代保留这个问题;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      • 2015-07-29
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多