mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.1 KiB
96 lines
3.1 KiB
using Alphaleonis.Win32.Filesystem;
|
|
using NTFSSecurity;
|
|
using Security2;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Management.Automation;
|
|
using System.Management.Automation.Runspaces;
|
|
using System.Security.AccessControl;
|
|
using System.Security.Principal;
|
|
|
|
namespace TestClient
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
//List<AccessControlSections> fileSystemRights = new List<AccessControlSections>();
|
|
|
|
//var values = Enum.GetValues(typeof(AccessControlSections)).Cast <AccessControlSections>().ToList();
|
|
|
|
//var v1 = values.Where(v => v == AccessControlSections.All).FirstOrDefault
|
|
|
|
var x = Enum.
|
|
|
|
|
|
|
|
|
|
var item1 = new FileInfo("D:\\file1.txt");
|
|
var item2 = new DirectoryInfo("D:\\test3");
|
|
var account1 = new List<IdentityReference2>() { (IdentityReference2)@"raandree1\randr_000" };
|
|
|
|
FileSystemAccessRule2.AddFileSystemAccessRule(item1, account1, FileSystemRights2.FullControl, AccessControlType.Allow, InheritanceFlags.ContainerInherit, PropagationFlags.None);
|
|
|
|
return;
|
|
var path = @"C:\Windows";
|
|
var account = @"raandree1\randr_000";
|
|
var server = "localhost";
|
|
|
|
var sd = Directory.GetAccessControl(path, AccessControlSections.Access);
|
|
var id = new IdentityReference2(account);
|
|
EffectiveAccess.GetEffectiveAccess(new FileInfo(path), id, "localhost");
|
|
|
|
var result1 = InvokeCommand("gi2 c:\\windows");
|
|
|
|
var result2 = InvokeCommand(@"gi -Path D:\SingleMachine\ | Get-EffectiveAccess")
|
|
.Select(ace => ace.ImmediateBaseObject)
|
|
.Cast<FileSystemAccessRule2>().ToList();
|
|
|
|
foreach (var ace in result2)
|
|
{
|
|
Console.WriteLine(string.Format("{0};{1}", ace.Account, ace.IsInherited));
|
|
}
|
|
|
|
Console.ReadKey();
|
|
}
|
|
|
|
public static List<PSObject> InvokeCommand(string script)
|
|
{
|
|
var runspace = RunspaceFactory.CreateRunspace();
|
|
runspace.Open();
|
|
var powershell = PowerShell.Create();
|
|
powershell.Runspace = runspace;
|
|
|
|
powershell.Commands.AddScript(script);
|
|
var result = powershell.Invoke();
|
|
|
|
powershell.Dispose();
|
|
runspace.Close();
|
|
|
|
return result.ToList();
|
|
}
|
|
|
|
public static List<PSObject> InvokeCommand(string command, Dictionary<string, object> parameters)
|
|
{
|
|
var runspace = RunspaceFactory.CreateRunspace();
|
|
runspace.Open();
|
|
var powershell = PowerShell.Create();
|
|
powershell.Runspace = runspace;
|
|
|
|
var cmd = new Command(command);
|
|
foreach (var parameter in parameters)
|
|
{
|
|
cmd.Parameters.Add(parameter.Key, parameter.Value);
|
|
}
|
|
|
|
powershell.Commands.AddCommand(cmd);
|
|
var result = powershell.Invoke();
|
|
|
|
powershell.Dispose();
|
|
runspace.Close();
|
|
|
|
return result.ToList();
|
|
}
|
|
}
|
|
}
|