Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#文件创建-如何授予IUSR删除权限?_C#_Security_Permissions_Ntfs - Fatal编程技术网

C#文件创建-如何授予IUSR删除权限?

C#文件创建-如何授予IUSR删除权限?,c#,security,permissions,ntfs,C#,Security,Permissions,Ntfs,我有一个用C#编写的控制台程序,它在用户foo下运行。程序创建一个文件。在某些情况下,在IUSR下运行的web应用程序需要能够删除console应用程序创建的文件 我想在创建文件时将DELETE(或任何等效项)授予IUSR。我怎么能在C#中做到这一点 我已经找到了,我不确定这是为了什么,但因为你不能指定一个特定的用户,我很确定这就是我现在需要的 有人知道怎么做吗 [顺便说一句,我意识到,在某些CIRC中,授予IUSR对任何文件的删除权是一件相当狡猾的事情,但在这种情况下,所涉及文件的性质意味着我

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

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

我已经找到了,我不确定这是为了什么,但因为你不能指定一个特定的用户,我很确定这就是我现在需要的

有人知道怎么做吗


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

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

我假定您可以物理访问运行console应用程序和web应用程序的计算机

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


希望有帮助。

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

我假定您可以物理访问运行console应用程序和web应用程序的计算机

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


希望能有帮助。

一个快速的谷歌搜索产生了

一个快速的谷歌搜索产生了

@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);



        }
    }
}

感谢所有人的回复。

@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);



        }
    }
}

感谢大家的回复。

@browning:是的,我也发现了,但是“gotodotnet”示例的链接已失效,搜索替换网站时没有找到任何名为“ACLs in.NET”的内容@Ken browning发布的链接在您所说的“已失效”链接的正下方包含一个代码示例。另外,请使用评论回复具体答案,或者编辑您的问题以提供澄清。@browning:是的,我也发现了,但“GoToTotNet”示例的链接已失效,搜索替换网站时不会出现任何名为“ACLs in.NET”的内容@Ken browning发布的链接在您所说的“已失效”链接的正下方包含一个代码示例。另外,请使用评论来回答特定的答案,或者编辑您的问题以提供澄清。@Sabau-感谢您的回答。我想通过编程而不是通过用户界面来设置权限。@Sabau-谢谢您的回复。我想通过编程而不是通过用户界面来设置权限。