C#文件创建 - 如何授予IUSR DELETE?

时间:2009-02-06 00:30:24

标签: c# security permissions ntfs

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

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

我发现FileIOPermission并且我不确定这是什么,但由于您无法指定特定用户,我很确定现在就是我需要的。

任何人都有一个如何做到这一点的好指针?

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

3 个答案:

答案 0 :(得分: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);



        }
    }
}

感谢所有人的回复。

答案 1 :(得分:1)

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

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

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

希望它有所帮助。

答案 2 :(得分:1)

快速谷歌搜索产生了Setting NTFS Permissions with C#