首次从代码访问Windows文件夹

时间:2014-06-26 11:59:23

标签: .net windows temp

目前我正在编写一个应该访问C:\Windows\Temp文件夹中的文件的应用 当我尝试从我的代码访问时找不到该文件。

当我尝试在Windows资源管理器中打开文件夹时,我收到一条消息。消息说:

  

您目前无权访问此文件夹,请单击“继续”以永久访问此文件夹。

单击Continue后问题消失,我可以从代码中访问该文件而不会有任何麻烦。

是否可以从代码中获得相同的结果?或者也许有一个更好的地方来存储用户之间共享的临时文件。

在用户文件夹之间共享的动机:

我有以下工作流程:

  1. 创建数据库备份并将其存储在临时文件夹中
  2. 用DB做一些事情
  3. 从存储在临时文件夹
  4. 中的文件恢复数据库

    步骤1和3由DB本身执行,步骤2由我的程序执行。通常,我的程序由DB以外的其他用户启动。这就是我需要在用户之间共享文件夹的原因。

1 个答案:

答案 0 :(得分:2)

你所描述的是一个坏主意,自Windows 95以来不鼓励。由于显而易见的原因,应用程序和普通用户允许修改Windows文件夹。

Windows提供了用于存储应用程序数据的特定文件夹,每个用户或应用程序的所有用户都可以共享。它们在Environment.SpecialFolder枚举中定义。您可以使用Environment.GetFolderPath检索实际值。

使用此方法是获取正确路径位置的唯一方法,因为文件夹的位置可以通过环境变量,系统策略或用户首选项进行更改。

要获取每用户应用程序数据文件夹,请使用:

var userDataPath=Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

要获取所有用户共有的应用数据路径,请使用:

var dataPath=Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

确保在这些文件夹下为您的应用程序创建一个文件夹,以避免破坏其他应用程序使用的数据