@@ -25,7 +25,9 @@ | |||
- Account (SamAccountName or SID) | |||
- AccessRights (Read, Change, FullControl, etc., ...) | |||
- AccessType (Allow or Deny) | |||
- ApplyTo (This folder only, Only files, etc.) | |||
- | |||
(This folder only, Only files, etc.) | |||
All the options are explained in the parameter section. | |||
@@ -95,12 +95,6 @@ | |||
<Compile Include="PathCmdlets\TestPath2.cs" /> | |||
<Compile Include="SecurityDescriptorCmdlets\GetSecurityDescriptor.cs" /> | |||
<Compile Include="SecurityDescriptorCmdlets\SetSecurityDescriptor.cs" /> | |||
<Compile Include="ShowSimpleEffectiveAccess.cs"> | |||
<SubType>Form</SubType> | |||
</Compile> | |||
<Compile Include="ShowSimpleEffectiveAccess.Designer.cs"> | |||
<DependentUpon>ShowSimpleEffectiveAccess.cs</DependentUpon> | |||
</Compile> | |||
<Compile Include="Extensions.cs" /> | |||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||
<Compile Include="Properties\Resources.Designer.cs"> | |||
@@ -108,12 +102,6 @@ | |||
<DesignTime>True</DesignTime> | |||
<DependentUpon>Resources.resx</DependentUpon> | |||
</Compile> | |||
<Compile Include="ShowSimpleAccess.cs"> | |||
<SubType>Form</SubType> | |||
</Compile> | |||
<Compile Include="ShowSimpleAccess.Designer.cs"> | |||
<DependentUpon>ShowSimpleAccess.cs</DependentUpon> | |||
</Compile> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\PrivilegeControl\PrivilegeControl.csproj"> | |||
@@ -150,16 +138,10 @@ | |||
<Compile Include="SimpleAccessCmdlets\SimpleAccessCmdlets.cs" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<EmbeddedResource Include="ShowSimpleEffectiveAccess.resx"> | |||
<DependentUpon>ShowSimpleEffectiveAccess.cs</DependentUpon> | |||
</EmbeddedResource> | |||
<EmbeddedResource Include="Properties\Resources.resx"> | |||
<Generator>PublicResXFileCodeGenerator</Generator> | |||
<LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||
</EmbeddedResource> | |||
<EmbeddedResource Include="ShowSimpleAccess.resx"> | |||
<DependentUpon>ShowSimpleAccess.cs</DependentUpon> | |||
</EmbeddedResource> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Content Include="NTFSSecurity-Help.xml"> | |||
@@ -146,7 +146,8 @@ | |||
</TableColumnItem> | |||
<TableColumnItem> | |||
<ScriptBlock> | |||
[Security2.FileSystemSecurity2]::ConvertToApplyTo($_.InheritanceFlags, $_.PropagationFlags) | |||
[Security2.FileSystemSecurity2]::ConvertTo | |||
($_.InheritanceFlags, $_.PropagationFlags) | |||
</ScriptBlock> | |||
</TableColumnItem> | |||
<TableColumnItem> | |||
@@ -1,309 +0,0 @@ | |||
namespace NTFSSecurity | |||
{ | |||
partial class ShowSimpleAccessForm | |||
{ | |||
/// <summary> | |||
/// Required designer variable. | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// Clean up any resources being used. | |||
/// </summary> | |||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region Windows Form Designer generated code | |||
/// <summary> | |||
/// Required method for Designer support - do not modify | |||
/// the contents of this method with the code editor. | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
this.components = new System.ComponentModel.Container(); | |||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShowSimpleAccessForm)); | |||
this.trvDirectories = new System.Windows.Forms.TreeView(); | |||
this.imlIcons = new System.Windows.Forms.ImageList(this.components); | |||
this.lstPermissions = new System.Windows.Forms.ListView(); | |||
this.chdIdentity = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
this.chdRights = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
this.chdAccessControlType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
this.chkRemoveFoldersWithoutAccess = new System.Windows.Forms.CheckBox(); | |||
this.grpFilter = new System.Windows.Forms.GroupBox(); | |||
this.grpSearchForIdentity = new System.Windows.Forms.GroupBox(); | |||
this.btnSearchForIdentityNext = new System.Windows.Forms.Button(); | |||
this.btnSearchForIdentityPrev = new System.Windows.Forms.Button(); | |||
this.txtSearchForIdentity = new System.Windows.Forms.TextBox(); | |||
this.btnSearchForIdentity = new System.Windows.Forms.Button(); | |||
this.grpSearchForFolder = new System.Windows.Forms.GroupBox(); | |||
this.btnSearchForFolderPrev = new System.Windows.Forms.Button(); | |||
this.btnSearchForFolderNext = new System.Windows.Forms.Button(); | |||
this.btnSearchForFolder = new System.Windows.Forms.Button(); | |||
this.txtSearchForFolder = new System.Windows.Forms.TextBox(); | |||
this.labDirectoryTreeView = new System.Windows.Forms.Label(); | |||
this.labAccessView = new System.Windows.Forms.Label(); | |||
this.ttSearchForFolder = new System.Windows.Forms.ToolTip(this.components); | |||
this.grpFilter.SuspendLayout(); | |||
this.grpSearchForIdentity.SuspendLayout(); | |||
this.grpSearchForFolder.SuspendLayout(); | |||
this.SuspendLayout(); | |||
// | |||
// trvDirectories | |||
// | |||
this.trvDirectories.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||
| System.Windows.Forms.AnchorStyles.Left))); | |||
this.trvDirectories.ImageIndex = 0; | |||
this.trvDirectories.ImageList = this.imlIcons; | |||
this.trvDirectories.Location = new System.Drawing.Point(12, 29); | |||
this.trvDirectories.Name = "trvDirectories"; | |||
this.trvDirectories.SelectedImageIndex = 0; | |||
this.trvDirectories.Size = new System.Drawing.Size(320, 574); | |||
this.trvDirectories.TabIndex = 0; | |||
this.trvDirectories.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.trvDirectories_AfterSelect); | |||
// | |||
// imlIcons | |||
// | |||
this.imlIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imlIcons.ImageStream"))); | |||
this.imlIcons.TransparentColor = System.Drawing.Color.Transparent; | |||
this.imlIcons.Images.SetKeyName(0, "container.jpg"); | |||
// | |||
// lstPermissions | |||
// | |||
this.lstPermissions.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||
| System.Windows.Forms.AnchorStyles.Left) | |||
| System.Windows.Forms.AnchorStyles.Right))); | |||
this.lstPermissions.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { | |||
this.chdIdentity, | |||
this.chdRights, | |||
this.chdAccessControlType}); | |||
this.lstPermissions.Location = new System.Drawing.Point(338, 29); | |||
this.lstPermissions.Name = "lstPermissions"; | |||
this.lstPermissions.Size = new System.Drawing.Size(480, 342); | |||
this.lstPermissions.SmallImageList = this.imlIcons; | |||
this.lstPermissions.TabIndex = 1; | |||
this.lstPermissions.UseCompatibleStateImageBehavior = false; | |||
this.lstPermissions.View = System.Windows.Forms.View.Details; | |||
// | |||
// chdIdentity | |||
// | |||
this.chdIdentity.Text = "Identity"; | |||
// | |||
// chdRights | |||
// | |||
this.chdRights.Text = "Rights"; | |||
// | |||
// chdAccessControlType | |||
// | |||
this.chdAccessControlType.Text = "AccessControlType"; | |||
// | |||
// chkRemoveFoldersWithoutAccess | |||
// | |||
this.chkRemoveFoldersWithoutAccess.AutoSize = true; | |||
this.chkRemoveFoldersWithoutAccess.Location = new System.Drawing.Point(6, 19); | |||
this.chkRemoveFoldersWithoutAccess.Name = "chkRemoveFoldersWithoutAccess"; | |||
this.chkRemoveFoldersWithoutAccess.Size = new System.Drawing.Size(347, 17); | |||
this.chkRemoveFoldersWithoutAccess.TabIndex = 2; | |||
this.chkRemoveFoldersWithoutAccess.Text = "Remove Folders that do not have different access than their parents"; | |||
this.chkRemoveFoldersWithoutAccess.UseVisualStyleBackColor = true; | |||
this.chkRemoveFoldersWithoutAccess.CheckedChanged += new System.EventHandler(this.chkRemoveFoldersWithoutAccess_CheckedChanged); | |||
// | |||
// grpFilter | |||
// | |||
this.grpFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | |||
| System.Windows.Forms.AnchorStyles.Right))); | |||
this.grpFilter.Controls.Add(this.grpSearchForIdentity); | |||
this.grpFilter.Controls.Add(this.grpSearchForFolder); | |||
this.grpFilter.Controls.Add(this.chkRemoveFoldersWithoutAccess); | |||
this.grpFilter.Location = new System.Drawing.Point(338, 377); | |||
this.grpFilter.Name = "grpFilter"; | |||
this.grpFilter.Size = new System.Drawing.Size(480, 226); | |||
this.grpFilter.TabIndex = 3; | |||
this.grpFilter.TabStop = false; | |||
this.grpFilter.Text = "Filter"; | |||
// | |||
// grpSearchForIdentity | |||
// | |||
this.grpSearchForIdentity.Controls.Add(this.btnSearchForIdentityNext); | |||
this.grpSearchForIdentity.Controls.Add(this.btnSearchForIdentityPrev); | |||
this.grpSearchForIdentity.Controls.Add(this.txtSearchForIdentity); | |||
this.grpSearchForIdentity.Controls.Add(this.btnSearchForIdentity); | |||
this.grpSearchForIdentity.Location = new System.Drawing.Point(9, 125); | |||
this.grpSearchForIdentity.Name = "grpSearchForIdentity"; | |||
this.grpSearchForIdentity.Size = new System.Drawing.Size(384, 95); | |||
this.grpSearchForIdentity.TabIndex = 4; | |||
this.grpSearchForIdentity.TabStop = false; | |||
this.grpSearchForIdentity.Text = "Search for Identity"; | |||
// | |||
// btnSearchForIdentityNext | |||
// | |||
this.btnSearchForIdentityNext.Enabled = false; | |||
this.btnSearchForIdentityNext.Location = new System.Drawing.Point(222, 45); | |||
this.btnSearchForIdentityNext.Name = "btnSearchForIdentityNext"; | |||
this.btnSearchForIdentityNext.Size = new System.Drawing.Size(75, 23); | |||
this.btnSearchForIdentityNext.TabIndex = 7; | |||
this.btnSearchForIdentityNext.Text = "Prev"; | |||
this.btnSearchForIdentityNext.UseVisualStyleBackColor = true; | |||
this.btnSearchForIdentityNext.Click += new System.EventHandler(this.btnSearchForIdentityNext_Click); | |||
// | |||
// btnSearchForIdentityPrev | |||
// | |||
this.btnSearchForIdentityPrev.Enabled = false; | |||
this.btnSearchForIdentityPrev.Location = new System.Drawing.Point(303, 45); | |||
this.btnSearchForIdentityPrev.Name = "btnSearchForIdentityPrev"; | |||
this.btnSearchForIdentityPrev.Size = new System.Drawing.Size(75, 23); | |||
this.btnSearchForIdentityPrev.TabIndex = 6; | |||
this.btnSearchForIdentityPrev.Text = "Next"; | |||
this.btnSearchForIdentityPrev.UseVisualStyleBackColor = true; | |||
this.btnSearchForIdentityPrev.Click += new System.EventHandler(this.btnSearchForIdentityPrev_Click); | |||
// | |||
// txtSearchForIdentity | |||
// | |||
this.txtSearchForIdentity.Location = new System.Drawing.Point(3, 19); | |||
this.txtSearchForIdentity.Name = "txtSearchForIdentity"; | |||
this.txtSearchForIdentity.Size = new System.Drawing.Size(341, 20); | |||
this.txtSearchForIdentity.TabIndex = 4; | |||
// | |||
// btnSearchForIdentity | |||
// | |||
this.btnSearchForIdentity.Location = new System.Drawing.Point(350, 17); | |||
this.btnSearchForIdentity.Name = "btnSearchForIdentity"; | |||
this.btnSearchForIdentity.Size = new System.Drawing.Size(28, 23); | |||
this.btnSearchForIdentity.TabIndex = 5; | |||
this.btnSearchForIdentity.Text = "Go"; | |||
this.btnSearchForIdentity.UseVisualStyleBackColor = true; | |||
this.btnSearchForIdentity.Click += new System.EventHandler(this.btnSearchForIdentity_Click); | |||
// | |||
// grpSearchForFolder | |||
// | |||
this.grpSearchForFolder.Controls.Add(this.btnSearchForFolderPrev); | |||
this.grpSearchForFolder.Controls.Add(this.btnSearchForFolderNext); | |||
this.grpSearchForFolder.Controls.Add(this.btnSearchForFolder); | |||
this.grpSearchForFolder.Controls.Add(this.txtSearchForFolder); | |||
this.grpSearchForFolder.Location = new System.Drawing.Point(6, 42); | |||
this.grpSearchForFolder.Name = "grpSearchForFolder"; | |||
this.grpSearchForFolder.Size = new System.Drawing.Size(387, 77); | |||
this.grpSearchForFolder.TabIndex = 3; | |||
this.grpSearchForFolder.TabStop = false; | |||
this.grpSearchForFolder.Text = "Search for Folder"; | |||
this.ttSearchForFolder.SetToolTip(this.grpSearchForFolder, "\"Search for folder\" lets you search in the tree view for the"); | |||
// | |||
// btnSearchForFolderPrev | |||
// | |||
this.btnSearchForFolderPrev.Enabled = false; | |||
this.btnSearchForFolderPrev.Location = new System.Drawing.Point(225, 45); | |||
this.btnSearchForFolderPrev.Name = "btnSearchForFolderPrev"; | |||
this.btnSearchForFolderPrev.Size = new System.Drawing.Size(75, 23); | |||
this.btnSearchForFolderPrev.TabIndex = 3; | |||
this.btnSearchForFolderPrev.Text = "Prev"; | |||
this.btnSearchForFolderPrev.UseVisualStyleBackColor = true; | |||
this.btnSearchForFolderPrev.Click += new System.EventHandler(this.btnSearchForFolderPrev_Click); | |||
// | |||
// btnSearchForFolderNext | |||
// | |||
this.btnSearchForFolderNext.Enabled = false; | |||
this.btnSearchForFolderNext.Location = new System.Drawing.Point(306, 45); | |||
this.btnSearchForFolderNext.Name = "btnSearchForFolderNext"; | |||
this.btnSearchForFolderNext.Size = new System.Drawing.Size(75, 23); | |||
this.btnSearchForFolderNext.TabIndex = 2; | |||
this.btnSearchForFolderNext.Text = "Next"; | |||
this.btnSearchForFolderNext.UseVisualStyleBackColor = true; | |||
this.btnSearchForFolderNext.Click += new System.EventHandler(this.btnSearchForFolderNext_Click); | |||
// | |||
// btnSearchForFolder | |||
// | |||
this.btnSearchForFolder.Location = new System.Drawing.Point(353, 17); | |||
this.btnSearchForFolder.Name = "btnSearchForFolder"; | |||
this.btnSearchForFolder.Size = new System.Drawing.Size(28, 23); | |||
this.btnSearchForFolder.TabIndex = 1; | |||
this.btnSearchForFolder.Text = "Go"; | |||
this.btnSearchForFolder.UseVisualStyleBackColor = true; | |||
this.btnSearchForFolder.Click += new System.EventHandler(this.btnSearchForFolder_Click); | |||
// | |||
// txtSearchForFolder | |||
// | |||
this.txtSearchForFolder.Location = new System.Drawing.Point(6, 19); | |||
this.txtSearchForFolder.Name = "txtSearchForFolder"; | |||
this.txtSearchForFolder.Size = new System.Drawing.Size(341, 20); | |||
this.txtSearchForFolder.TabIndex = 0; | |||
this.ttSearchForFolder.SetToolTip(this.txtSearchForFolder, "\"Search for folder\" lets you search in the tree view for the"); | |||
// | |||
// labDirectoryTreeView | |||
// | |||
this.labDirectoryTreeView.AutoSize = true; | |||
this.labDirectoryTreeView.Location = new System.Drawing.Point(13, 13); | |||
this.labDirectoryTreeView.Name = "labDirectoryTreeView"; | |||
this.labDirectoryTreeView.Size = new System.Drawing.Size(57, 13); | |||
this.labDirectoryTreeView.TabIndex = 4; | |||
this.labDirectoryTreeView.Text = "Directories"; | |||
// | |||
// labAccessView | |||
// | |||
this.labAccessView.AutoSize = true; | |||
this.labAccessView.Location = new System.Drawing.Point(344, 12); | |||
this.labAccessView.Name = "labAccessView"; | |||
this.labAccessView.Size = new System.Drawing.Size(202, 13); | |||
this.labAccessView.TabIndex = 5; | |||
this.labAccessView.Text = "Permissions given on the seletcted object"; | |||
// | |||
// ttSearchForFolder | |||
// | |||
this.ttSearchForFolder.IsBalloon = true; | |||
this.ttSearchForFolder.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info; | |||
// | |||
// ShowSimpleAccessForm | |||
// | |||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
this.ClientSize = new System.Drawing.Size(830, 615); | |||
this.Controls.Add(this.labAccessView); | |||
this.Controls.Add(this.labDirectoryTreeView); | |||
this.Controls.Add(this.grpFilter); | |||
this.Controls.Add(this.lstPermissions); | |||
this.Controls.Add(this.trvDirectories); | |||
this.Name = "ShowSimpleAccessForm"; | |||
this.Text = "ShowAccess"; | |||
this.grpFilter.ResumeLayout(false); | |||
this.grpFilter.PerformLayout(); | |||
this.grpSearchForIdentity.ResumeLayout(false); | |||
this.grpSearchForIdentity.PerformLayout(); | |||
this.grpSearchForFolder.ResumeLayout(false); | |||
this.grpSearchForFolder.PerformLayout(); | |||
this.ResumeLayout(false); | |||
this.PerformLayout(); | |||
} | |||
#endregion | |||
private System.Windows.Forms.TreeView trvDirectories; | |||
private System.Windows.Forms.ListView lstPermissions; | |||
private System.Windows.Forms.ColumnHeader chdIdentity; | |||
private System.Windows.Forms.ColumnHeader chdRights; | |||
private System.Windows.Forms.ColumnHeader chdAccessControlType; | |||
private System.Windows.Forms.ImageList imlIcons; | |||
private System.Windows.Forms.CheckBox chkRemoveFoldersWithoutAccess; | |||
private System.Windows.Forms.GroupBox grpFilter; | |||
private System.Windows.Forms.Label labDirectoryTreeView; | |||
private System.Windows.Forms.Label labAccessView; | |||
private System.Windows.Forms.GroupBox grpSearchForFolder; | |||
private System.Windows.Forms.Button btnSearchForFolder; | |||
private System.Windows.Forms.TextBox txtSearchForFolder; | |||
private System.Windows.Forms.Button btnSearchForFolderNext; | |||
private System.Windows.Forms.Button btnSearchForFolderPrev; | |||
private System.Windows.Forms.GroupBox grpSearchForIdentity; | |||
private System.Windows.Forms.Button btnSearchForIdentityNext; | |||
private System.Windows.Forms.Button btnSearchForIdentityPrev; | |||
private System.Windows.Forms.TextBox txtSearchForIdentity; | |||
private System.Windows.Forms.Button btnSearchForIdentity; | |||
private System.Windows.Forms.ToolTip ttSearchForFolder; | |||
} | |||
} |
@@ -1,271 +0,0 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Data; | |||
using System.Drawing; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Windows.Forms; | |||
using Alphaleonis.Win32.Filesystem; | |||
using Security2; | |||
namespace NTFSSecurity | |||
{ | |||
public partial class ShowSimpleAccessForm : Form | |||
{ | |||
private IEnumerable<DirectoryInfo> directoryList; | |||
private IQueryable<SimpleFileSystemAccessRule> aceList; | |||
private IEnumerable<DirectoryTreeNode> searchResultByFolder; | |||
private int searchResultByFolderIndex; | |||
public IEnumerable<DirectoryInfo> DirectoryList | |||
{ | |||
get { return directoryList; } | |||
} | |||
public IEnumerable<SimpleFileSystemAccessRule> AceList | |||
{ | |||
get { return aceList; } | |||
} | |||
public ShowSimpleAccessForm() | |||
{ | |||
InitializeComponent(); | |||
} | |||
public void BuildDirectoryTreeNodes() | |||
{ | |||
string previousPath = string.Empty; | |||
DirectoryTreeNode previousNode; | |||
DirectoryTreeNode rootNode; | |||
var rootDirectory = directoryList.First(); | |||
rootNode = new DirectoryTreeNode(rootDirectory.FullName, rootDirectory.Name, aceList.Where(ace => ace.FullName == rootDirectory.Name)); | |||
previousNode = rootNode; | |||
trvDirectories.Nodes.Add(rootNode); | |||
foreach (var directory in directoryList.Skip(1)) | |||
{ | |||
if (previousNode.Name == directory.GetParent().FullName) | |||
{ | |||
var node = new DirectoryTreeNode(directory.FullName, directory.Name, aceList.Where(ace => ace.FullName == directory.FullName)); | |||
previousNode.Nodes.Add(node); | |||
} | |||
else | |||
{ | |||
previousNode = (DirectoryTreeNode)trvDirectories.Nodes.Find(directory.GetParent().FullName, true).FirstOrDefault(); | |||
if (previousNode != null) | |||
{ | |||
var node = new DirectoryTreeNode(directory.FullName, directory.Name, aceList.Where(ace => ace.FullName == directory.FullName)); | |||
previousNode.Nodes.Add(node); | |||
} | |||
else | |||
{ | |||
var node = new DirectoryTreeNode(directory.FullName, directory.Name, aceList.Where(ace => ace.FullName == directory.FullName)); | |||
previousNode.Nodes.Add(node); | |||
} | |||
} | |||
} | |||
} | |||
public void BuildDirectoryTreeNodes(IEnumerable<DirectoryInfo> directoryList, IQueryable<SimpleFileSystemAccessRule> aceList) | |||
{ | |||
this.directoryList = directoryList; | |||
this.aceList = aceList; | |||
this.BuildDirectoryTreeNodes(); | |||
} | |||
private void trvDirectories_AfterSelect(object sender, TreeViewEventArgs e) | |||
{ | |||
lstPermissions.Items.Clear(); | |||
foreach (var ace in aceList.Where(ace => ace.FullName == e.Node.Name)) | |||
{ | |||
ListViewItem listItem = new ListViewItem(); | |||
listItem.Name = e.Node.Name; | |||
listItem.Text = ace.Identity.AccountName; | |||
listItem.SubItems.AddRange(new string[] { ace.AccessRights.ToString(), ace.AccessControlType.ToString(), e.Node.FullPath }); | |||
listItem.ImageIndex = 1; | |||
lstPermissions.Items.Add(listItem); | |||
} | |||
if (lstPermissions.Items.Count > 0) | |||
{ | |||
foreach (ColumnHeader column in lstPermissions.Columns) | |||
{ | |||
column.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); | |||
} | |||
} | |||
} | |||
private void chkRemoveFoldersWithoutAccess_CheckedChanged(object sender, EventArgs e) | |||
{ | |||
if (chkRemoveFoldersWithoutAccess.Checked) | |||
{ | |||
RemoveFoldersWithoutAccess((DirectoryTreeNode)trvDirectories.Nodes[0]); | |||
} | |||
else | |||
{ | |||
trvDirectories.Nodes.Clear(); | |||
BuildDirectoryTreeNodes(); | |||
} | |||
} | |||
public void RemoveFoldersWithoutAccess(DirectoryTreeNode node) | |||
{ | |||
for (int i = 0; i < node.Nodes.Count; i++) | |||
{ | |||
if (node.Nodes[i].GetNodeCount(false) > 0) | |||
RemoveFoldersWithoutAccess((DirectoryTreeNode)node.Nodes[i]); | |||
if (node.Nodes[i].Nodes.Count == 0 & ((DirectoryTreeNode)node.Nodes[i]).Acl.Count() == 0) | |||
{ | |||
node.Nodes.Remove(node.Nodes[i]); | |||
i--; | |||
} | |||
} | |||
} | |||
private void btnSearchForFolder_Click(object sender, EventArgs e) | |||
{ | |||
searchResultByFolder = null; | |||
searchResultByFolderIndex = 0; | |||
trvDirectories.HideSelection = false; | |||
searchResultByFolder = FindNodeByFolder((DirectoryTreeNode)trvDirectories.Nodes[0], txtSearchForFolder.Text); | |||
if (searchResultByFolder.Count() > 0) | |||
{ | |||
btnSearchForFolderNext.Enabled = true; | |||
btnSearchForFolderPrev.Enabled = true; | |||
trvDirectories.SelectedNode = searchResultByFolder.First(); | |||
searchResultByFolderIndex = 0; | |||
} | |||
else | |||
{ | |||
btnSearchForFolderNext.Enabled = false; | |||
btnSearchForFolderPrev.Enabled = false; | |||
} | |||
} | |||
private IEnumerable<DirectoryTreeNode> FindNodeByFolder(DirectoryTreeNode node, string search) | |||
{ | |||
if (node.Text.ToLower().Contains(search.ToLower())) | |||
{ | |||
yield return node; | |||
} | |||
foreach (DirectoryTreeNode childNode in node.Nodes) | |||
{ | |||
foreach (DirectoryTreeNode match in this.FindNodeByFolder(childNode, search)) | |||
{ | |||
yield return match; | |||
} | |||
} | |||
} | |||
private IEnumerable<DirectoryTreeNode> FindNodeByIdentity(DirectoryTreeNode node, string search) | |||
{ | |||
if (node.Acl.Where(ace => ace.Identity.AccountName.ToLower().Contains(search.ToLower())).Count() > 0) | |||
{ | |||
yield return node; | |||
} | |||
foreach (DirectoryTreeNode childNode in node.Nodes) | |||
{ | |||
foreach (DirectoryTreeNode match in this.FindNodeByIdentity(childNode, search)) | |||
{ | |||
yield return match; | |||
} | |||
} | |||
} | |||
private void btnSearchForFolderNext_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolder.Count() > searchResultByFolderIndex + 1) | |||
{ | |||
searchResultByFolderIndex++; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
private void btnSearchForFolderPrev_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolderIndex - 1 > -1) | |||
{ | |||
searchResultByFolderIndex--; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
private void btnSearchForIdentity_Click(object sender, EventArgs e) | |||
{ | |||
trvDirectories.HideSelection = false; | |||
searchResultByFolder = null; | |||
searchResultByFolderIndex = 0; | |||
searchResultByFolder = FindNodeByIdentity((DirectoryTreeNode)trvDirectories.Nodes[0], txtSearchForIdentity.Text); | |||
if (searchResultByFolder.Count() > 0) | |||
{ | |||
btnSearchForIdentityNext.Enabled = true; | |||
btnSearchForIdentityPrev.Enabled = true; | |||
trvDirectories.SelectedNode = searchResultByFolder.First(); | |||
searchResultByFolderIndex = 0; | |||
} | |||
else | |||
{ | |||
btnSearchForIdentityNext.Enabled = false; | |||
btnSearchForIdentityPrev.Enabled = false; | |||
} | |||
} | |||
private void btnSearchForIdentityPrev_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolder.Count() > searchResultByFolderIndex + 1) | |||
{ | |||
searchResultByFolderIndex++; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
private void btnSearchForIdentityNext_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolderIndex - 1 > -1) | |||
{ | |||
searchResultByFolderIndex--; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
} | |||
public class DirectoryTreeNode : TreeNode | |||
{ | |||
private IList<SimpleFileSystemAccessRule> acl; | |||
public IList<SimpleFileSystemAccessRule> Acl | |||
{ | |||
get { return acl; } | |||
} | |||
public DirectoryTreeNode(string key, string text) | |||
: base(text) | |||
{ | |||
this.Name = key; | |||
} | |||
public DirectoryTreeNode(string key, string text, IQueryable<SimpleFileSystemAccessRule> acl) | |||
: this(key, text) | |||
{ | |||
this.acl = acl.ToList(); | |||
if (acl.Count() == 0) | |||
{ | |||
this.ForeColor = Color.Gray; | |||
} | |||
} | |||
} | |||
} |
@@ -1,168 +0,0 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<root> | |||
<!-- | |||
Microsoft ResX Schema | |||
Version 2.0 | |||
The primary goals of this format is to allow a simple XML format | |||
that is mostly human readable. The generation and parsing of the | |||
various data types are done through the TypeConverter classes | |||
associated with the data types. | |||
Example: | |||
... ado.net/XML headers & schema ... | |||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||
<resheader name="version">2.0</resheader> | |||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||
</data> | |||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
<comment>This is a comment</comment> | |||
</data> | |||
There are any number of "resheader" rows that contain simple | |||
name/value pairs. | |||
Each data row contains a name, and value. The row also contains a | |||
type or mimetype. Type corresponds to a .NET class that support | |||
text/value conversion through the TypeConverter architecture. | |||
Classes that don't support this are serialized and stored with the | |||
mimetype set. | |||
The mimetype is used for serialized objects, and tells the | |||
ResXResourceReader how to depersist the object. This is currently not | |||
extensible. For a given mimetype the value must be set accordingly: | |||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||
that the ResXResourceWriter will generate, however the reader can | |||
read any of the formats listed below. | |||
mimetype: application/x-microsoft.net.object.binary.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.soap.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
value : The object must be serialized into a byte array | |||
: using a System.ComponentModel.TypeConverter | |||
: and then encoded with base64 encoding. | |||
--> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<metadata name="imlIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
<value>17, 17</value> | |||
</metadata> | |||
<data name="imlIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value> | |||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w | |||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 | |||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAs | |||
CAAAAk1TRnQBSQFMAwEBAAGIAQABiAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA | |||
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA | |||
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA | |||
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm | |||
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ | |||
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm | |||
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz | |||
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm | |||
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm | |||
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA | |||
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm | |||
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm | |||
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm | |||
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA | |||
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ | |||
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz | |||
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ | |||
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA | |||
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM | |||
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm | |||
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ | |||
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ | |||
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM | |||
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm | |||
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM | |||
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA | |||
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA | |||
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 | |||
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BABD/MAAQ/zAAAf8B9AGS | |||
BPcDkgL3AZIB9wHyAf8wAAH/Ae8LFAEPAQcB/zAAAf8B7AGZAnkBHAF5ARwBWAEcAXkBHAFzAUMBBwH/ | |||
MAAB/wHtAfQEeQFeAZkBXgJ5ARwBQwEHAf8wAAH/Ae0BwwN5AV4BmQFeAZkBXgF5AVgBQwEHAf8wAAH/ | |||
Ae0B9AJ5AV0BmQFeAbwBXgGZAV4B9wFDAQcB/zAAAf8B7QHDAXoCeQFeAZkBXgGZAV4BeQFYAUMBBwH/ | |||
MAAB/wHtAfQEeQFeAZkBXgJ5ARwBQwEHAf8wAAH/Ae0BwwOgAeUBGgHlARoB5QEaAXkBQwEHAf8wAAH/ | |||
Ae0BGwGgAcMBGgGgARsEBwH3AewB8QH/MAAB/wG8ARwEeQH3AvABvALwAfMC/zAAAv8BvAHtAnMB7QHw | |||
CP8wAAP/BPQJ/zAAEP8wAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/gQAL | |||
</value> | |||
</data> | |||
<metadata name="ttSearchForFolder.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
<value>114, 17</value> | |||
</metadata> | |||
</root> |
@@ -1,234 +0,0 @@ | |||
namespace NTFSSecurity | |||
{ | |||
partial class ShowSimpleEffectiveAccessForm | |||
{ | |||
/// <summary> | |||
/// Required designer variable. | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// Clean up any resources being used. | |||
/// </summary> | |||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region Windows Form Designer generated code | |||
/// <summary> | |||
/// Required method for Designer support - do not modify | |||
/// the contents of this method with the code editor. | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
this.components = new System.ComponentModel.Container(); | |||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShowSimpleEffectiveAccessForm)); | |||
this.trvDirectories = new System.Windows.Forms.TreeView(); | |||
this.imlIcons = new System.Windows.Forms.ImageList(this.components); | |||
this.lstPermissions = new System.Windows.Forms.ListView(); | |||
this.chdIdentity = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
this.chdRights = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
this.chdAccessControlType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
this.chkRemoveFoldersWithoutAccess = new System.Windows.Forms.CheckBox(); | |||
this.grpFilter = new System.Windows.Forms.GroupBox(); | |||
this.grpSearchForFolder = new System.Windows.Forms.GroupBox(); | |||
this.btnSearchForFolderPrev = new System.Windows.Forms.Button(); | |||
this.btnSearchForFolderNext = new System.Windows.Forms.Button(); | |||
this.btnSearchForFolder = new System.Windows.Forms.Button(); | |||
this.txtSearchForFolder = new System.Windows.Forms.TextBox(); | |||
this.labDirectoryTreeView = new System.Windows.Forms.Label(); | |||
this.labAccessView = new System.Windows.Forms.Label(); | |||
this.grpFilter.SuspendLayout(); | |||
this.grpSearchForFolder.SuspendLayout(); | |||
this.SuspendLayout(); | |||
// | |||
// trvDirectories | |||
// | |||
this.trvDirectories.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||
| System.Windows.Forms.AnchorStyles.Left))); | |||
this.trvDirectories.ImageIndex = 0; | |||
this.trvDirectories.ImageList = this.imlIcons; | |||
this.trvDirectories.Location = new System.Drawing.Point(12, 29); | |||
this.trvDirectories.Name = "trvDirectories"; | |||
this.trvDirectories.SelectedImageIndex = 0; | |||
this.trvDirectories.Size = new System.Drawing.Size(320, 353); | |||
this.trvDirectories.TabIndex = 0; | |||
this.trvDirectories.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.trvDirectories_AfterSelect); | |||
// | |||
// imlIcons | |||
// | |||
this.imlIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imlIcons.ImageStream"))); | |||
this.imlIcons.TransparentColor = System.Drawing.Color.Transparent; | |||
this.imlIcons.Images.SetKeyName(0, "container.jpg"); | |||
// | |||
// lstPermissions | |||
// | |||
this.lstPermissions.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||
| System.Windows.Forms.AnchorStyles.Left) | |||
| System.Windows.Forms.AnchorStyles.Right))); | |||
this.lstPermissions.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { | |||
this.chdIdentity, | |||
this.chdRights, | |||
this.chdAccessControlType}); | |||
this.lstPermissions.Location = new System.Drawing.Point(338, 29); | |||
this.lstPermissions.Name = "lstPermissions"; | |||
this.lstPermissions.Size = new System.Drawing.Size(480, 226); | |||
this.lstPermissions.SmallImageList = this.imlIcons; | |||
this.lstPermissions.TabIndex = 1; | |||
this.lstPermissions.UseCompatibleStateImageBehavior = false; | |||
this.lstPermissions.View = System.Windows.Forms.View.Details; | |||
// | |||
// chdIdentity | |||
// | |||
this.chdIdentity.Text = "Identity"; | |||
// | |||
// chdRights | |||
// | |||
this.chdRights.Text = "Rights"; | |||
// | |||
// chdAccessControlType | |||
// | |||
this.chdAccessControlType.Text = "AccessControlType"; | |||
// | |||
// chkRemoveFoldersWithoutAccess | |||
// | |||
this.chkRemoveFoldersWithoutAccess.AutoSize = true; | |||
this.chkRemoveFoldersWithoutAccess.Location = new System.Drawing.Point(6, 19); | |||
this.chkRemoveFoldersWithoutAccess.Name = "chkRemoveFoldersWithoutAccess"; | |||
this.chkRemoveFoldersWithoutAccess.Size = new System.Drawing.Size(347, 17); | |||
this.chkRemoveFoldersWithoutAccess.TabIndex = 2; | |||
this.chkRemoveFoldersWithoutAccess.Text = "Remove Folders that do not have different access than their parents"; | |||
this.chkRemoveFoldersWithoutAccess.UseVisualStyleBackColor = true; | |||
this.chkRemoveFoldersWithoutAccess.CheckedChanged += new System.EventHandler(this.chkRemoveFoldersWithoutAccess_CheckedChanged); | |||
// | |||
// grpFilter | |||
// | |||
this.grpFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | |||
| System.Windows.Forms.AnchorStyles.Right))); | |||
this.grpFilter.Controls.Add(this.grpSearchForFolder); | |||
this.grpFilter.Controls.Add(this.chkRemoveFoldersWithoutAccess); | |||
this.grpFilter.Location = new System.Drawing.Point(338, 258); | |||
this.grpFilter.Name = "grpFilter"; | |||
this.grpFilter.Size = new System.Drawing.Size(480, 124); | |||
this.grpFilter.TabIndex = 3; | |||
this.grpFilter.TabStop = false; | |||
this.grpFilter.Text = "Filter"; | |||
// | |||
// grpSearchForFolder | |||
// | |||
this.grpSearchForFolder.Controls.Add(this.btnSearchForFolderPrev); | |||
this.grpSearchForFolder.Controls.Add(this.btnSearchForFolderNext); | |||
this.grpSearchForFolder.Controls.Add(this.btnSearchForFolder); | |||
this.grpSearchForFolder.Controls.Add(this.txtSearchForFolder); | |||
this.grpSearchForFolder.Location = new System.Drawing.Point(6, 42); | |||
this.grpSearchForFolder.Name = "grpSearchForFolder"; | |||
this.grpSearchForFolder.Size = new System.Drawing.Size(421, 77); | |||
this.grpSearchForFolder.TabIndex = 3; | |||
this.grpSearchForFolder.TabStop = false; | |||
this.grpSearchForFolder.Text = "Search for Folder"; | |||
// | |||
// btnSearchForFolderPrev | |||
// | |||
this.btnSearchForFolderPrev.Enabled = false; | |||
this.btnSearchForFolderPrev.Location = new System.Drawing.Point(240, 45); | |||
this.btnSearchForFolderPrev.Name = "btnSearchForFolderPrev"; | |||
this.btnSearchForFolderPrev.Size = new System.Drawing.Size(75, 23); | |||
this.btnSearchForFolderPrev.TabIndex = 3; | |||
this.btnSearchForFolderPrev.Text = "Prev"; | |||
this.btnSearchForFolderPrev.UseVisualStyleBackColor = true; | |||
this.btnSearchForFolderPrev.Click += new System.EventHandler(this.btnSearchForFolderPrev_Click); | |||
// | |||
// btnSearchForFolderNext | |||
// | |||
this.btnSearchForFolderNext.Enabled = false; | |||
this.btnSearchForFolderNext.Location = new System.Drawing.Point(321, 45); | |||
this.btnSearchForFolderNext.Name = "btnSearchForFolderNext"; | |||
this.btnSearchForFolderNext.Size = new System.Drawing.Size(75, 23); | |||
this.btnSearchForFolderNext.TabIndex = 2; | |||
this.btnSearchForFolderNext.Text = "Next"; | |||
this.btnSearchForFolderNext.UseVisualStyleBackColor = true; | |||
this.btnSearchForFolderNext.Click += new System.EventHandler(this.btnSearchForFolderNext_Click); | |||
// | |||
// btnSearchForFolder | |||
// | |||
this.btnSearchForFolder.Location = new System.Drawing.Point(353, 17); | |||
this.btnSearchForFolder.Name = "btnSearchForFolder"; | |||
this.btnSearchForFolder.Size = new System.Drawing.Size(43, 23); | |||
this.btnSearchForFolder.TabIndex = 1; | |||
this.btnSearchForFolder.Text = "Go"; | |||
this.btnSearchForFolder.UseVisualStyleBackColor = true; | |||
this.btnSearchForFolder.Click += new System.EventHandler(this.btnSearchForFolder_Click); | |||
// | |||
// txtSearchForFolder | |||
// | |||
this.txtSearchForFolder.Location = new System.Drawing.Point(6, 19); | |||
this.txtSearchForFolder.Name = "txtSearchForFolder"; | |||
this.txtSearchForFolder.Size = new System.Drawing.Size(341, 20); | |||
this.txtSearchForFolder.TabIndex = 0; | |||
// | |||
// labDirectoryTreeView | |||
// | |||
this.labDirectoryTreeView.AutoSize = true; | |||
this.labDirectoryTreeView.Location = new System.Drawing.Point(13, 13); | |||
this.labDirectoryTreeView.Name = "labDirectoryTreeView"; | |||
this.labDirectoryTreeView.Size = new System.Drawing.Size(57, 13); | |||
this.labDirectoryTreeView.TabIndex = 4; | |||
this.labDirectoryTreeView.Text = "Directories"; | |||
// | |||
// labAccessView | |||
// | |||
this.labAccessView.AutoSize = true; | |||
this.labAccessView.Location = new System.Drawing.Point(344, 12); | |||
this.labAccessView.Name = "labAccessView"; | |||
this.labAccessView.Size = new System.Drawing.Size(202, 13); | |||
this.labAccessView.TabIndex = 5; | |||
this.labAccessView.Text = "Permissions given on the seletcted object"; | |||
// | |||
// ShowSimpleEffectiveAccessForm | |||
// | |||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
this.ClientSize = new System.Drawing.Size(830, 389); | |||
this.Controls.Add(this.labAccessView); | |||
this.Controls.Add(this.labDirectoryTreeView); | |||
this.Controls.Add(this.grpFilter); | |||
this.Controls.Add(this.lstPermissions); | |||
this.Controls.Add(this.trvDirectories); | |||
this.Name = "ShowSimpleEffectiveAccessForm"; | |||
this.Text = "ShowAccess"; | |||
this.grpFilter.ResumeLayout(false); | |||
this.grpFilter.PerformLayout(); | |||
this.grpSearchForFolder.ResumeLayout(false); | |||
this.grpSearchForFolder.PerformLayout(); | |||
this.ResumeLayout(false); | |||
this.PerformLayout(); | |||
} | |||
#endregion | |||
private System.Windows.Forms.TreeView trvDirectories; | |||
private System.Windows.Forms.ListView lstPermissions; | |||
private System.Windows.Forms.ColumnHeader chdIdentity; | |||
private System.Windows.Forms.ColumnHeader chdRights; | |||
private System.Windows.Forms.ColumnHeader chdAccessControlType; | |||
private System.Windows.Forms.ImageList imlIcons; | |||
private System.Windows.Forms.CheckBox chkRemoveFoldersWithoutAccess; | |||
private System.Windows.Forms.GroupBox grpFilter; | |||
private System.Windows.Forms.Label labDirectoryTreeView; | |||
private System.Windows.Forms.Label labAccessView; | |||
private System.Windows.Forms.GroupBox grpSearchForFolder; | |||
private System.Windows.Forms.Button btnSearchForFolder; | |||
private System.Windows.Forms.TextBox txtSearchForFolder; | |||
private System.Windows.Forms.Button btnSearchForFolderNext; | |||
private System.Windows.Forms.Button btnSearchForFolderPrev; | |||
} | |||
} |
@@ -1,222 +0,0 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Data; | |||
using System.Drawing; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Windows.Forms; | |||
using System.IO; | |||
using Security2; | |||
namespace NTFSSecurity | |||
{ | |||
public partial class ShowSimpleEffectiveAccessForm : Form | |||
{ | |||
private IEnumerable<DirectoryInfo> directoryList; | |||
private IQueryable<SimpleFileSystemAccessRule> aceList; | |||
private IEnumerable<DirectoryTreeNode> searchResultByFolder; | |||
private int searchResultByFolderIndex; | |||
public IEnumerable<DirectoryInfo> DirectoryList | |||
{ | |||
get { return directoryList; } | |||
} | |||
public IEnumerable<SimpleFileSystemAccessRule> AceList | |||
{ | |||
get { return aceList; } | |||
} | |||
public ShowSimpleEffectiveAccessForm() | |||
{ | |||
InitializeComponent(); | |||
} | |||
public void BuildDirectoryTreeNodes() | |||
{ | |||
string previousPath = string.Empty; | |||
DirectoryTreeNode previousNode; | |||
DirectoryTreeNode rootNode; | |||
var rootDirectory = directoryList.First(); | |||
rootNode = new DirectoryTreeNode(rootDirectory.FullName, rootDirectory.Name, aceList.Where(ace => ace.FullName == rootDirectory.Name)); | |||
previousNode = rootNode; | |||
trvDirectories.Nodes.Add(rootNode); | |||
foreach (var directory in directoryList.Skip(1)) | |||
{ | |||
if (previousNode.Name == directory.GetParent().FullName) | |||
{ | |||
var node = new DirectoryTreeNode(directory.FullName, directory.Name, aceList.Where(ace => ace.FullName == directory.FullName)); | |||
previousNode.Nodes.Add(node); | |||
} | |||
else | |||
{ | |||
previousNode = (DirectoryTreeNode)trvDirectories.Nodes.Find(directory.GetParent().FullName, true).FirstOrDefault(); | |||
if (previousNode != null) | |||
{ | |||
var node = new DirectoryTreeNode(directory.FullName, directory.Name, aceList.Where(ace => ace.FullName == directory.FullName)); | |||
previousNode.Nodes.Add(node); | |||
} | |||
else | |||
{ | |||
var node = new DirectoryTreeNode(directory.FullName, directory.Name, aceList.Where(ace => ace.FullName == directory.FullName)); | |||
previousNode.Nodes.Add(node); | |||
} | |||
} | |||
} | |||
} | |||
public void BuildDirectoryTreeNodes(IEnumerable<DirectoryInfo> directoryList, IQueryable<SimpleFileSystemAccessRule> aceList) | |||
{ | |||
this.directoryList = directoryList; | |||
this.aceList = aceList; | |||
this.BuildDirectoryTreeNodes(); | |||
} | |||
private void trvDirectories_AfterSelect(object sender, TreeViewEventArgs e) | |||
{ | |||
lstPermissions.Items.Clear(); | |||
foreach (var ace in aceList.Where(ace => ace.FullName == e.Node.Name)) | |||
{ | |||
ListViewItem listItem = new ListViewItem(); | |||
listItem.Name = e.Node.Name; | |||
listItem.Text = ace.Identity.AccountName; | |||
listItem.SubItems.AddRange(new string[] { ace.AccessRights.ToString(), ace.AccessControlType.ToString(), e.Node.FullPath }); | |||
listItem.ImageIndex = 1; | |||
lstPermissions.Items.Add(listItem); | |||
} | |||
if (lstPermissions.Items.Count > 0) | |||
{ | |||
foreach (ColumnHeader column in lstPermissions.Columns) | |||
{ | |||
column.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); | |||
} | |||
} | |||
} | |||
private void chkRemoveFoldersWithoutAccess_CheckedChanged(object sender, EventArgs e) | |||
{ | |||
if (chkRemoveFoldersWithoutAccess.Checked) | |||
{ | |||
RemoveFoldersWithoutAccess((DirectoryTreeNode)trvDirectories.Nodes[0]); | |||
} | |||
else | |||
{ | |||
trvDirectories.Nodes.Clear(); | |||
BuildDirectoryTreeNodes(); | |||
} | |||
} | |||
public void RemoveFoldersWithoutAccess(DirectoryTreeNode node) | |||
{ | |||
for (int i = 0; i < node.Nodes.Count; i++) | |||
{ | |||
if (node.Nodes[i].GetNodeCount(false) > 0) | |||
RemoveFoldersWithoutAccess((DirectoryTreeNode)node.Nodes[i]); | |||
if (node.Nodes[i].Nodes.Count == 0 & ((DirectoryTreeNode)node.Nodes[i]).Acl.Count() == 0) | |||
{ | |||
node.Nodes.Remove(node.Nodes[i]); | |||
i--; | |||
} | |||
} | |||
} | |||
private void btnSearchForFolder_Click(object sender, EventArgs e) | |||
{ | |||
searchResultByFolder = null; | |||
searchResultByFolderIndex = 0; | |||
trvDirectories.HideSelection = false; | |||
searchResultByFolder = FindNodeByFolder((DirectoryTreeNode)trvDirectories.Nodes[0], txtSearchForFolder.Text); | |||
if (searchResultByFolder.Count() > 0) | |||
{ | |||
btnSearchForFolderNext.Enabled = true; | |||
btnSearchForFolderPrev.Enabled = true; | |||
trvDirectories.SelectedNode = searchResultByFolder.First(); | |||
searchResultByFolderIndex = 0; | |||
} | |||
else | |||
{ | |||
btnSearchForFolderNext.Enabled = false; | |||
btnSearchForFolderPrev.Enabled = false; | |||
} | |||
} | |||
private IEnumerable<DirectoryTreeNode> FindNodeByFolder(DirectoryTreeNode node, string search) | |||
{ | |||
if (node.Text.ToLower().Contains(search.ToLower())) | |||
{ | |||
yield return node; | |||
} | |||
foreach (DirectoryTreeNode childNode in node.Nodes) | |||
{ | |||
foreach (DirectoryTreeNode match in this.FindNodeByFolder(childNode, search)) | |||
{ | |||
yield return match; | |||
} | |||
} | |||
} | |||
private IEnumerable<DirectoryTreeNode> FindNodeByIdentity(DirectoryTreeNode node, string search) | |||
{ | |||
if (node.Acl.Where(ace => ace.Identity.AccountName.ToLower().Contains(search.ToLower())).Count() > 0) | |||
{ | |||
yield return node; | |||
} | |||
foreach (DirectoryTreeNode childNode in node.Nodes) | |||
{ | |||
foreach (DirectoryTreeNode match in this.FindNodeByIdentity(childNode, search)) | |||
{ | |||
yield return match; | |||
} | |||
} | |||
} | |||
private void btnSearchForFolderNext_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolder.Count() > searchResultByFolderIndex + 1) | |||
{ | |||
searchResultByFolderIndex++; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
private void btnSearchForFolderPrev_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolderIndex - 1 > -1) | |||
{ | |||
searchResultByFolderIndex--; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
private void btnSearchForIdentityPrev_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolder.Count() > searchResultByFolderIndex + 1) | |||
{ | |||
searchResultByFolderIndex++; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
private void btnSearchForIdentityNext_Click(object sender, EventArgs e) | |||
{ | |||
if (searchResultByFolderIndex - 1 > -1) | |||
{ | |||
searchResultByFolderIndex--; | |||
trvDirectories.SelectedNode = searchResultByFolder.ElementAt(searchResultByFolderIndex); | |||
} | |||
} | |||
} | |||
} |
@@ -1,165 +0,0 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<root> | |||
<!-- | |||
Microsoft ResX Schema | |||
Version 2.0 | |||
The primary goals of this format is to allow a simple XML format | |||
that is mostly human readable. The generation and parsing of the | |||
various data types are done through the TypeConverter classes | |||
associated with the data types. | |||
Example: | |||
... ado.net/XML headers & schema ... | |||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||
<resheader name="version">2.0</resheader> | |||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||
</data> | |||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
<comment>This is a comment</comment> | |||
</data> | |||
There are any number of "resheader" rows that contain simple | |||
name/value pairs. | |||
Each data row contains a name, and value. The row also contains a | |||
type or mimetype. Type corresponds to a .NET class that support | |||
text/value conversion through the TypeConverter architecture. | |||
Classes that don't support this are serialized and stored with the | |||
mimetype set. | |||
The mimetype is used for serialized objects, and tells the | |||
ResXResourceReader how to depersist the object. This is currently not | |||
extensible. For a given mimetype the value must be set accordingly: | |||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||
that the ResXResourceWriter will generate, however the reader can | |||
read any of the formats listed below. | |||
mimetype: application/x-microsoft.net.object.binary.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.soap.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
value : The object must be serialized into a byte array | |||
: using a System.ComponentModel.TypeConverter | |||
: and then encoded with base64 encoding. | |||
--> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<metadata name="imlIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
<value>17, 17</value> | |||
</metadata> | |||
<data name="imlIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value> | |||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w | |||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 | |||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAs | |||
CAAAAk1TRnQBSQFMAwEBAAGQAQABkAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA | |||
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA | |||
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA | |||
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm | |||
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ | |||
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm | |||
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz | |||
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm | |||
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm | |||
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA | |||
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm | |||
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm | |||
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm | |||
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA | |||
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ | |||
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz | |||
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ | |||
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA | |||
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM | |||
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm | |||
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ | |||
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ | |||
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM | |||
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm | |||
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM | |||
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA | |||
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA | |||
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 | |||
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BABD/MAAQ/zAAAf8B9AGS | |||
BPcDkgL3AZIB9wHyAf8wAAH/Ae8LFAEPAQcB/zAAAf8B7AGZAnkBHAF5ARwBWAEcAXkBHAFzAUMBBwH/ | |||
MAAB/wHtAfQEeQFeAZkBXgJ5ARwBQwEHAf8wAAH/Ae0BwwN5AV4BmQFeAZkBXgF5AVgBQwEHAf8wAAH/ | |||
Ae0B9AJ5AV0BmQFeAbwBXgGZAV4B9wFDAQcB/zAAAf8B7QHDAXoCeQFeAZkBXgGZAV4BeQFYAUMBBwH/ | |||
MAAB/wHtAfQEeQFeAZkBXgJ5ARwBQwEHAf8wAAH/Ae0BwwOgAeUBGgHlARoB5QEaAXkBQwEHAf8wAAH/ | |||
Ae0BGwGgAcMBGgGgARsEBwH3AewB8QH/MAAB/wG8ARwEeQH3AvABvALwAfMC/zAAAv8BvAHtAnMB7QHw | |||
CP8wAAP/BPQJ/zAAEP8wAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/gQAL | |||
</value> | |||
</data> | |||
</root> |
@@ -221,78 +221,5 @@ namespace NTFSSecurity | |||
//} | |||
//#endregion | |||
#region Show-SimpleAccess | |||
[Cmdlet(VerbsCommon.Show, "SimpleAccess")] | |||
public class ShowSimpleAccess : GetSimpleAccess | |||
{ | |||
Stopwatch stopwatch; | |||
protected override void BeginProcessing() | |||
{ | |||
stopwatch = new Stopwatch(); | |||
stopwatch.Start(); | |||
WriteDebug("Running Get-SimpleAccess"); | |||
} | |||
protected override void ProcessRecord() | |||
{ | |||
base.ProcessRecord(); | |||
} | |||
protected override void EndProcessing() | |||
{ | |||
stopwatch.Stop(); | |||
WriteDebug(string.Format("Runtime of Get-SimpleAccess: {0}.", stopwatch.Elapsed.ToString())); | |||
stopwatch.Reset(); stopwatch.Start(); | |||
WriteDebug("Creating TreeView"); | |||
ShowSimpleAccessForm form = new ShowSimpleAccessForm(); | |||
form.BuildDirectoryTreeNodes(directoryList, aceList.AsQueryable()); | |||
stopwatch.Stop(); | |||
WriteDebug(string.Format("Creating the Treeview took: {0}.", stopwatch.Elapsed.ToString())); | |||
form.ShowDialog(); | |||
} | |||
} | |||
#endregion | |||
//#region Show-SimpleEffectiveAccess | |||
//[Cmdlet(VerbsCommon.Show, "SimpleEffectiveAccess")] | |||
//public class ShowSimpleEffectiveAccess : GetSimpleEffectiveAccess | |||
//{ | |||
// Stopwatch stopwatch; | |||
// protected override void BeginProcessing() | |||
// { | |||
// stopwatch = new Stopwatch(); | |||
// stopwatch.Start(); | |||
// this.WriteDebug("Running Get-SimpleAccess"); | |||
// } | |||
// protected override void ProcessRecord() | |||
// { | |||
// base.ProcessRecord(); | |||
// } | |||
// protected override void EndProcessing() | |||
// { | |||
// stopwatch.Stop(); | |||
// this.WriteDebug(string.Format("Runtime of Get-SimpleAccess: {0}.", stopwatch.Elapsed.ToString())); | |||
// stopwatch.Reset(); stopwatch.Start(); | |||
// this.WriteDebug("Creating TreeView"); | |||
// ShowSimpleEffectiveAccessForm form = new ShowSimpleEffectiveAccessForm(); | |||
// form.BuildDirectoryTreeNodes(directoryList, aceList.AsQueryable()); | |||
// stopwatch.Stop(); | |||
// this.WriteDebug(string.Format("Creating the Treeview took: {0}.", stopwatch.Elapsed.ToString())); | |||
// form.ShowDialog(); | |||
// } | |||
//} | |||
//#endregion | |||
} |