【问题标题】:What guaranteed file writing locations are available?有哪些保证文件写入位置可用?
【发布时间】:2013-10-01 13:07:30
【问题描述】:

在本地系统上,是否有(合理地)保证可以创建目录结构来写入文件的位置?我正在寻找不需要管理权限即可更改权限的解决方案?

经过一番研究,我看到this 找到当前用户的桌面文件夹的答案。我可以使用这个,但是还有哪些其他可用的选项?

综合研究

System.Environment.SpecialFolder枚举

【问题讨论】:

  • 始终保证执行目录。
  • 真的吗?正在执行的应用程序总是可以写入它启动的目录吗?你能提供一个参考吗?我不相信这是真的(请记住,在 Vista 中,用于写入其安装位置下的文件夹的程序不再起作用,除非被授予提升的权限,或者如果 UAC 被禁用)。
  • 我只是在逗乐读权限而不是写权限(猜我在问题中错过了它)。是的,如果你想要写权限,你当然是正确的。
  • @EricJ.:在 Vista 中,用于在其安装位置写入文件夹的程序即使没有被授予提升的权限,通常仍然可以运行。但是,这是由于兼容性填充程序导致读/写操作被重定向到不同的文件夹。当然,这会产生各种奇怪的副作用(例如,以管理员身份运行旧程序会为其提供一组完全不同的设置)。

标签: c# .net-4.5


【解决方案1】:

考虑使用隔离存储类。

隔离存储为您提供与给定用户程序集关联的存储位置;它可以在不完全受信任的环境中工作,并且它可以使用漫游来保持用户的数据即使在不同的机器上也存在。见

http://msdn.microsoft.com/en-us/library/System.IO.IsolatedStorage.aspx

了解详情。

【讨论】:

  • 另外,数据可以按域隔离是什么意思?
  • @EricJ.:这是一个问答网站。 将问题作为问题提出
【解决方案2】:

特殊文件夹实际上是特殊的,因为有合理的保证它们会存在。

没有其他文件夹有这样的保证。甚至 C:\ 也无法保证(尽管它很可能出现在绝大多数 Windows 系统上)。

ApplicationData 下的自定义文件夹是为给定用户写入应用程序特定数据的常用位置,或CommonApplicationData 用于在系统上的所有用户之间共享应用程序数据的常用位置。

在实现漫游的环境中(用户的数据随身携带,无论他登录哪个物理服务器),ApplicationData 都会跟随用户。如果您不希望这种行为,您可以改用LocalApplicationData

【讨论】:

  • 合理保证 ...读作:一些 IT 部门可能会做一些奇怪的事情,并将这些事情锁定在非常小的空间或无法访问
【解决方案3】:

AppData 路径可能是您想要的。 windows XP+中的这个文件夹可以用

string folder = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

应用程序通常会在其下创建一个子文件夹来存储其数据,并且不需要任何特殊权限即可读取/写入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多