C# 以编程方式获取组列表用户权限Windows 2003中文件夹的特殊权限
我使用Windows2003Server,我需要获得有关安全文件夹的信息,使用C#编程 我想创建一个用于检查权限的工具。我需要获取文件夹的组、用户、权限和特殊权限 C:\Documents and Settings\All 用户\应用程序 数据\Microsoft\Crypto\RSA\MachineKeys 编辑: 下面是GetSecurityDescriptorSddlForm方法的示例代码C# 以编程方式获取组列表用户权限Windows 2003中文件夹的特殊权限,c#,security,permissions,ntfs,C#,Security,Permissions,Ntfs,我使用Windows2003Server,我需要获得有关安全文件夹的信息,使用C#编程 我想创建一个用于检查权限的工具。我需要获取文件夹的组、用户、权限和特殊权限 C:\Documents and Settings\All 用户\应用程序 数据\Microsoft\Crypto\RSA\MachineKeys 编辑: 下面是GetSecurityDescriptorSddlForm方法的示例代码 public static string GetObjectPermission(string fu
public static string GetObjectPermission(string fullFolderName)
{
FileSecurity fileSecure = File.GetAccessControl(fullFolderName);
StringBuilder acer = new StringBuilder();
fileSecure.GetSecurityDescriptorSddlForm(AccessControlSections.All);
foreach (FileSystemAccessRule ace in fileSecure.GetAccessRules(true, true, typeof(NTAccount)))
{
acer.Append(ace.FileSystemRights + ":" + ' ' + ace.IdentityReference.Value + "\n");
}
return acer.ToString();
}
此示例代码将显示哪个NTAccount可以修改或读取文件夹,例如此函数
如何获得组和特殊权限
有任何示例代码、建议吗?能否使用DirectoryInfo获取ACL?所有ACL都应在其中(用户、组): 完整文档:
如果要获取文件夹上ACL中的所有ace列表,应使用此方法,还可以使用此方法访问其他ace属性,如 ace.AccessControlType,ace.IsInhered
public static void checkAceInformation(string fileName,string loginName)
{
string fileSystemRightsValue = "";
FileSecurity security = File.GetAccessControl(FileName);
AuthorizationRuleCollection acl = security.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach(FileSystemAccessRule ace in acl)
{
if(ace.IdentityReference.Value == LoginName)
{
fileSystemRightsValue = ace.FileSystemRights.ToString();
Console.WriteLine(LoginName + " your permission value is" + fileSystemRightsValue)
return;
}
}
Console.WriteLine(LoginName + "your not permission in this folder");
}
当你说“获得特殊权限”时,你想知道他们是否拥有这些权限,或者他们实际上是什么吗?我想知道他们是否拥有这些权限。啊,好的。因为很容易判断他们是否会选中Windows资源管理器中的“特殊权限”复选框,因为它返回一个负数。但将该数字的每个部分与权限关联起来要复杂一些。
public static void checkAceInformation(string fileName,string loginName)
{
string fileSystemRightsValue = "";
FileSecurity security = File.GetAccessControl(FileName);
AuthorizationRuleCollection acl = security.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach(FileSystemAccessRule ace in acl)
{
if(ace.IdentityReference.Value == LoginName)
{
fileSystemRightsValue = ace.FileSystemRights.ToString();
Console.WriteLine(LoginName + " your permission value is" + fileSystemRightsValue)
return;
}
}
Console.WriteLine(LoginName + "your not permission in this folder");
}