2

我正在编写一个应用程序(.Net)来创建一些必须写入特殊文件夹的报告。
问题是:我的应用程序的用户应该在这个文件夹中具有读取权限,但不允许写入或更改任何内容。如果程序继承了用户的权限,我如何在这个文件夹中创建文件?

我对 Windows 权限不是很坚定,所以我不知道他们是否可以处理。

有人可以指出我的大致方向吗?

4

1 回答 1

1

显而易见的方法是创建一个对文件夹具有写入权限的服务,因此它可以充当写入文件夹的请求的“代理”。您的流程将如下所示:

  1. [程序] 在临时文件路径中创建报告输出
  2. [PROGRAM] 通知 [SERVICE] 报告输出 X 在临时文件路径中可用
  3. [SERVICE] 将报告输出 X 从临时文件路径复制到适当的受限位置
  4. [SERVICE] 通知 [PROGRAM] 输出已被复制
  5. [程序] 从受限位置访问输出。

拥有一个单独的代理进程来调解对受限位置的访问现在非常普遍,并且是 Internet Explorer 采用的技术之一,除其他外,它允许它在默认情况下使用 UAC 和受限文件系统访问进行操作。

您可以对代理服务进行编码,使其仅允许(即公开 API),例如,在受限制的位置创建新文件,从而防止历史输出被删除/覆盖,并且无需向标准用户提供除读取之外的任何内容访问受限位置。

另一种方法大致相似,但无需编写 Windows 服务,将创建一个计划任务,该任务配置为在执行步骤 1 到 5 中的操作的“提升的用户”下运行,然后对其进行配置允许应用程序按需(而不是按计划)执行它(我认为这是可能的,但不是 100% 确定)。

于 2012-06-26T10:44:10.530 回答