gpt4 book ai didi

c# - 如何检查 "Everyone"是否对c#中的文件具有完全控制权限

转载 作者:可可西里 更新时间:2023-11-01 13:52:08 28 4
gpt4 key购买 nike

我正在编写一个实用程序来帮助更改某个文件的文件权限,以允许/禁止 Windows 机器上的“Everyone”组访问它。到目前为止,我已经能够使用以下代码设置和删除“所有人”对文件的完全控制权限:

void AddFullControl()
{
FileSecurity fsFile = File.GetAccessControl("file.tmp");
fsFile.SetAccessRule( new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
File.SetAccessControl("file.tmp", fsFile);
}

void RemoveFullControl()
{
FileSecurity fsFile = File.GetAccessControl("file.tmp");
fsFile.SetAccessRule( new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Deny));
File.SetAccessControl("file.tmp", fsFile);
}

但是,我想检查一下“Everyone”是否已经拥有完全控制权限,但一直无法找到执行此操作的方法。我花了几天时间在谷歌搜索后通过谷歌搜索进行搜索,但一直没能找到办法做到这一点。有人可以指出我正确的方向或给我一个如何做到这一点的例子吗?

更新:这很快得到了回答,我能够想出有效的 c# 代码。我创建的代码如下:

void CheckAccess()
{
AuthorizationRuleCollection arcFile = File.GetAccessControl("file.tmp").GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
foreach (AuthorizationRule arFile in arcFile)
{
if (arFile.IdentityReference.Value == "Everyone")
{
FileSystemAccessRule fasrFile = (FileSystemAccessRule)arFile;
if (fasrFile.AccessControlType == AccessControlType.Allow && fasrFile.FileSystemRights.HasFlag(FileSystemRights.FullControl))
{
MessageBox.Show("file.tmp already has Full Control permissions granted to Everyone");
}
}
}
}

最佳答案

var everyone = fsFile.GetAccessRules(true, true, typeof(SecurityIdentifier))
.Cast<FileSystemAccessRule>()
.SingleOrDefault(x => x.IdentityReference.Value == "S-1-1-0");
bool fullControlAllowed = everyone != null
&& everyone.AccessControlType == AccessControlType.Allow
&& everyone.FileSystemRights.HasFlag(FileSystemRights.FullControl);

如果权限可能包括 EveryoneAllowDeny 条目,您将必须使用如下代码。它的语义略有不同,因为您无法获得有关 everyone Deny 条目的详细信息。

var everyone = fsFile.GetAccessRules(true, true, typeof(SecurityIdentifier))
.Cast<FileSystemAccessRule>()
.SingleOrDefault(x => x.IdentityReference.Value == "S-1-1-0"
&& x.AccessControlType == AccessControlType.Allow);
bool fullControlAllowed = everyone != null
&& everyone.FileSystemRights.HasFlag(FileSystemRights.FullControl)

关于c# - 如何检查 "Everyone"是否对c#中的文件具有完全控制权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525487/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com