【问题标题】:writing files to Common Application Data folder denied将文件写入 Common Application Data 文件夹被拒绝
【发布时间】:2010-12-01 08:23:44
【问题描述】:

我已使用以下功能将数据写入用户应用程序文件夹

private void WriteToLog(string source, string method, string msg)
{

 string LogFile =Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\test";            
 LogFile = LogFile + "\\Log.txt";
 StreamWriter sw = new StreamWriter(LogFile, true );
 string str = DateTime.Now.ToString() + "source=" + source + "\t Method=" + method + "\t" + msg;
sw.WriteLine(str);
sw.Flush();
sw.Close();
}

上述代码在管理员帐户中运行良好,但在受限用户帐户中失败

【问题讨论】:

  • 如果您使用 Path.Combine,代码会更简洁。

标签: c# .net permissions


【解决方案1】:

受限用户通常没有对所有用户共有的文件夹的写入权限。您确定不是要写入其他文件夹吗?

例如,您可以使用Environment.SpecialFolder.ApplicationData(当前用户,漫游数据)或Environment.SpecialFolder.LocalApplicationData(当前用户,非漫游数据)。

【讨论】:

  • 我为受限用户帐户选择了哪个文件夹
  • 通常,您可以将 ApplicationData 用于特定于用户但不一定仅限于该计算机的内容,使用 LocalApplicationData 用于特定于用户和特定于计算机的内容(例如,依赖于计算机安装的软件或安装路径)。
  • 那么访问权限有限的非用户特定数据应该存储在哪里?
  • @Rev1.0:你不能。 Windows 安全的基本原则是,如果您是受限用户,则只能针对自己存储数据。
  • 嗯,似乎违反直觉的是,没有任何位置可以保存一些通用应用程序相关的配置数据,这是所有用户通用的,没有麻烦。
猜你喜欢
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 2021-10-21
  • 1970-01-01
  • 2011-05-24
  • 2015-11-24
  • 1970-01-01
相关资源
最近更新 更多