http://stackoverflow.com/questions/15995345/vbscript-for-listing-explicit-rights
https://secure.marumoto.us/motowiki61/tiki-index.php?page=Reading+NTFS+and+Share+Permissions+with+VBScript+and+.Net&structure=ITDocRoot&page_ref_id=221
https://secure.marumoto.us/motowiki61/tiki-index.php?page=Users+and+Groups&structure=ITDocRoot&page_ref_id=207
http://www.indented.co.uk/2008/10/22/powershell-get-acl-listing-explicit-rights/
http://gallery.technet.microsoft.com/scriptcenter/7d96b296-77a0-4d17-9ab8-ca929b88e04a
http://www.indented.co.uk/2009/10/02/get-dsacl/
https://secure.marumoto.us/motowiki61/tiki-index.php?page=Reading+NTFS+and+Share+Permissions+with+VBScript+and+.Net&structure=ITDocRoot&page_ref_id=221
https://secure.marumoto.us/motowiki61/tiki-index.php?page=Users+and+Groups&structure=ITDocRoot&page_ref_id=207
http://www.indented.co.uk/2008/10/22/powershell-get-acl-listing-explicit-rights/
http://gallery.technet.microsoft.com/scriptcenter/7d96b296-77a0-4d17-9ab8-ca929b88e04a
http://www.indented.co.uk/2009/10/02/get-dsacl/
using System.IO;
ReplyDeleteusing System.Security.AccessControl;
using System.Security.Principal;
private void Form1_Load(object sender, EventArgs e)
{
GetDirectorySecurity(@"c:\temp\", 1);
}
static void GetDirectorySecurity(string dir, int levels)
{
int curLevel = 1;
string[] dirs = Directory.GetDirectories(dir);
string strFileCont = string.Empty;
foreach (string directory in dirs)
{
Console.WriteLine("---------------------------------------------------------");
Console.WriteLine(directory);
try
{
DirectoryInfo dInfo = new DirectoryInfo(directory);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
AuthorizationRuleCollection acl = dSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule ace in acl)
{
strFileCont = strFileCont + directory + "," + ace.IdentityReference.Value + "," + ace.AccessControlType + "," + ace.FileSystemRights + "," + ace.IsInherited.ToString() + Environment.NewLine;
}
if (curLevel < levels)
GetDirectorySecurity(@directory, curLevel + 1, levels);
}
catch
{
}
}
FileStream fileStream = new FileStream(@"c:\temp\" + "File1.csv", FileMode.Create);
fileStream.Close();
TextWriter sw = new StreamWriter(@"c:\temp\" + "File1.csv");
sw.WriteLine(strFileCont);
sw.Close();
}
static void GetDirectorySecurity(string dir, int curLevel, int levels)
{
string[] dirs = Directory.GetDirectories(@dir);
string tabs = "";
for (int i = 0; i < curLevel; i++)
tabs += "\t";
foreach (string directory in dirs)
{
Console.WriteLine(tabs.Substring(0, tabs.Length - 1) + "---------------------------------------------------------");
Console.WriteLine(tabs.Substring(0, tabs.Length - 1) + directory);
try
{
DirectoryInfo dInfo = new DirectoryInfo(directory);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
AuthorizationRuleCollection acl = dSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule ace in acl)
{
Console.WriteLine("{0}Account: {1}", tabs, ace.IdentityReference.Value);
Console.WriteLine("{0}Type: {1}", tabs, ace.AccessControlType);
Console.WriteLine("{0}Rights: {1}", tabs, ace.FileSystemRights);
Console.WriteLine("{0}Inherited: {1}", tabs, ace.IsInherited);
Console.WriteLine();
}
if (curLevel < levels)
GetDirectorySecurity(@directory, curLevel + 1, levels);
}
catch
{
Console.WriteLine("Could not access {0}", directory);
}
}
}
This comment has been removed by the author.
ReplyDelete