如何为程序授予比启动它的用户更多的权限

时间:2012-06-26 10:27:56

标签: .net windows file-permissions

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

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

有人能指出我的大方向吗?

1 个答案:

答案 0 :(得分:1)

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

  1. [PROGRAM]在临时文件路径中创建报告输出
  2. [PROGRAM]通知[SERVICE]报告输出X在临时文件路径中可用
  3. [SERVICE]将报告输出X从临时文件路径复制到适当的受限制位置
  4. [SERVICE]通知[PROGRAM]已复制输出
  5. [PROGRAM]从受限制的位置访问输出。
  6. 现在,拥有一个独立的代理进程来调解对受限制位置的访问是非常常见的,并且是Internet Explorer采用的技术之一,默认情况下允许它与UAC一起运行并限制文件系统访问。

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

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