0

我有一个用 C# 编写的控制台程序,它在用户 foo 下运行。该程序创建一个文件。在某些情况下,在 IUSR 下运行的 Web 应用程序需要能够删除控制台应用程序创建的文件。

创建文件时,我想将 DELETE(或任何等效项)授予 IUSR。我怎样才能在 C# 中做到这一点?

我找到了FileIOPermission,但我不确定它的用途,但由于您无法指定特定用户,我很确定这就是我现在需要的。

有人对如何做到这一点有很好的指导吗?

[顺便说一句,我意识到在某些圈子中授予对任何文件的 IUSR DELETE 权利是一件相当狡猾的事情,但在这种情况下,所涉及文件的性质意味着我很高兴将这些权利授予 IUSR]

4

3 回答 3

2

@Sabau:感谢您对答案的修改-它启发了我再试一次,这一次我似乎已经解决了。我编写了一个小测试程序,以便其他人可以看到它是如何完成的。对于我的测试,我完全控制了IUSR,但显然你可以添加/拒绝任何你喜欢的东西。

    using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Permissions;
using System.Security.Principal;
using System.Security.AccessControl;

namespace GrantingFilePermsTests
{
    class Program
    {
    static void Main(string[] args)
    {
        string strFilePath1 = "E:/1.txt";
        string strFilePath2 = "E:/2.txt";

        if (File.Exists(strFilePath1))
        {
        File.Delete(strFilePath1);
        }
        if (File.Exists(strFilePath2))
        {
        File.Delete(strFilePath2);
        }

        File.Create(strFilePath1);
        File.Create(strFilePath2);
        // Get a FileSecurity object that represents the
        // current security settings.
        FileSecurity fSecurity = File.GetAccessControl(strFilePath1);

        // Add the FileSystemAccessRule to the security settings.
        fSecurity.AddAccessRule(new FileSystemAccessRule("IUSR_SOMESERVER",FileSystemRights.FullControl,AccessControlType.Allow));

        // Set the new access settings.
        File.SetAccessControl(strFilePath1, fSecurity);



        }
    }
}

感谢大家的回复。

于 2009-02-06T01:57:19.480 回答
1

使用 Windows 资源管理器 -> 选择文件所在的目录 -> 右键单击​​ -> 属性 -> 安全选项卡 -> 将“修改”权限授予 IUSR_xxx 用户帐户。

我假设您可以物理访问同时运行控制台应用程序和 Web 应用程序的计算机。

已编辑:对于 ntfs 权限的编程设置,您需要摆弄System.Security.AccessControl.FileSecurity类和File.SetAccessControl方法。

希望能帮助到你。

于 2009-02-06T00:42:59.677 回答
1

一个快速的谷歌搜索产生了用 C# 设置 NTFS 权限

于 2009-02-06T00:43:56.807 回答