在 C# 中设置文件权限

Posted

技术标签:

【中文标题】在 C# 中设置文件权限【英文标题】:Set File Permissions in C# 【发布时间】:2011-11-27 06:34:42 【问题描述】:

我想在 C# 中将文件的权限设置为“无法删除”,只能读取。但我不知道该怎么做。你能帮帮我吗?

【问题讨论】:

【参考方案1】:

这是关于属性(参见 jb.'s answer)或权限,即读/写访问权限等吗?在后一种情况下,请参阅File.SetAccessControl。

来自 MSDN:

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

// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));

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

请参阅How to grant full permission to a file created by my application for ALL users? 了解更具体的示例。

在最初的问题中,听起来您想禁止FileSystemRights.Delete 对。

【讨论】:

代码也在这个MSDN 上面的链接(File.AccessControl)是德语版本。对于回答“Nein”的人,英文版的地址为docs.microsoft.com/en-us/dotnet/api/…。到 Sprichst du Deutsch'【参考方案2】:

看看File.SetAttributes()。网上有很多关于如何使用的例子。

取自该 MSDN 页面:

FileAttributes attributes = File.GetAttributes(path);

        if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
        
            // Show the file.
            attributes = RemoveAttribute(attributes, FileAttributes.Hidden);
            File.SetAttributes(path, attributes);
            Console.WriteLine("The 0 file is no longer hidden.", path);
         
        else 
        
            // Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
            Console.WriteLine("The 0 file is now hidden.", path);
        

【讨论】:

我认为问题是关于“权限”而不是“属性”...【参考方案3】:

你忘记在RemoveAttribute方法中复制了,就是:

    private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
    
        return attributes & ~attributesToRemove;
    

【讨论】:

以上是关于在 C# 中设置文件权限的主要内容,如果未能解决你的问题,请参考以下文章

在Winform程序中设置管理员权限及为用户组添加写入权限

在Winform程序中设置管理员权限及为用户组添加写入权限

在Winform程序中设置管理员权限及为用户组添加写入权限

在android中设置文件读取权限

如何在 Windows 中设置文件夹权限?

在 Android 应用程序的文件中设置可执行权限