Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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# 如何以编程方式更改文件的安全属性,以便任何用户都可以删除该文件_C#_Security_File - Fatal编程技术网

C# 如何以编程方式更改文件的安全属性,以便任何用户都可以删除该文件

C# 如何以编程方式更改文件的安全属性,以便任何用户都可以删除该文件,c#,security,file,C#,Security,File,我有一个用C#编写的服务器,它使用模拟 我想知道如何更改文件的安全属性,以便任何用户都可以删除它 我的服务器模拟用户,然后创建一个临时文件。稍后,我需要删除该文件,但此时,我不再模拟创建该文件的用户,当尝试删除该文件时,会生成异常。我的假设是,在创建文件时,我应该能够更改安全属性,以允许任何用户删除该文件 我如何才能做到这一点(C#首选,但p/invoke也可以) 我目前正在使用.NET 1.1,因此希望能在1.1中实现一种方法。听起来您希望使用该方法添加ACL,使内置的“Everyone”组能

我有一个用C#编写的服务器,它使用模拟

我想知道如何更改文件的安全属性,以便任何用户都可以删除它

我的服务器模拟用户,然后创建一个临时文件。稍后,我需要删除该文件,但此时,我不再模拟创建该文件的用户,当尝试删除该文件时,会生成异常。我的假设是,在创建文件时,我应该能够更改安全属性,以允许任何用户删除该文件

我如何才能做到这一点(C#首选,但p/invoke也可以)


我目前正在使用.NET 1.1,因此希望能在1.1中实现一种方法。

听起来您希望使用该方法添加ACL,使内置的“Everyone”组能够删除文件。MSDN文档具有添加和删除文件上ACL记录的功能。

与其允许所有人删除文件,不如只为需要删除文件的人添加条目。根据您的帖子,这可能是您的用户帐户和发起流程。允许每个人删除该文件会让你面临安全问题

public static void AllowIdentityToDelete(FileInfo file, string identity)
{
    var rule = new FileSystemAccessRule(
        identity,
        FileSystemRights.Delete | FileSystemRights.DeleteSubdirectoriesAndFiles,
        AccessControlType.Allow);

    var acls = file.GetAccessControl();
    acls.AddAccessRule(rule);
    file.SetAccessControl(acls);
}

您需要为相关用户传递正确的身份

谢谢,但我需要一个.NET 1.1解决方案。谢谢,但我需要一个.NET 1.1解决方案。@jmatthais,对于.NET 1.1,你有点麻烦了。您必须PInvoke ACL函数调用。这需要相当多的工作。您可以找到一个针对ACL的1.1的在线库