@@ -25,7 +25,9 @@ | |||||
- Account (SamAccountName or SID) | - Account (SamAccountName or SID) | ||||
- AccessRights (Read, Change, FullControl, etc., ...) | - AccessRights (Read, Change, FullControl, etc., ...) | ||||
- AccessType (Allow or Deny) | - 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. | All the options are explained in the parameter section. | ||||
@@ -95,12 +95,6 @@ | |||||
<Compile Include="PathCmdlets\TestPath2.cs" /> | <Compile Include="PathCmdlets\TestPath2.cs" /> | ||||
<Compile Include="SecurityDescriptorCmdlets\GetSecurityDescriptor.cs" /> | <Compile Include="SecurityDescriptorCmdlets\GetSecurityDescriptor.cs" /> | ||||
<Compile Include="SecurityDescriptorCmdlets\SetSecurityDescriptor.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="Extensions.cs" /> | ||||
<Compile Include="Properties\AssemblyInfo.cs" /> | <Compile Include="Properties\AssemblyInfo.cs" /> | ||||
<Compile Include="Properties\Resources.Designer.cs"> | <Compile Include="Properties\Resources.Designer.cs"> | ||||
@@ -108,12 +102,6 @@ | |||||
<DesignTime>True</DesignTime> | <DesignTime>True</DesignTime> | ||||
<DependentUpon>Resources.resx</DependentUpon> | <DependentUpon>Resources.resx</DependentUpon> | ||||
</Compile> | </Compile> | ||||
<Compile Include="ShowSimpleAccess.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="ShowSimpleAccess.Designer.cs"> | |||||
<DependentUpon>ShowSimpleAccess.cs</DependentUpon> | |||||
</Compile> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\PrivilegeControl\PrivilegeControl.csproj"> | <ProjectReference Include="..\PrivilegeControl\PrivilegeControl.csproj"> | ||||
@@ -150,16 +138,10 @@ | |||||
<Compile Include="SimpleAccessCmdlets\SimpleAccessCmdlets.cs" /> | <Compile Include="SimpleAccessCmdlets\SimpleAccessCmdlets.cs" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<EmbeddedResource Include="ShowSimpleEffectiveAccess.resx"> | |||||
<DependentUpon>ShowSimpleEffectiveAccess.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="Properties\Resources.resx"> | <EmbeddedResource Include="Properties\Resources.resx"> | ||||
<Generator>PublicResXFileCodeGenerator</Generator> | <Generator>PublicResXFileCodeGenerator</Generator> | ||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput> | <LastGenOutput>Resources.Designer.cs</LastGenOutput> | ||||
</EmbeddedResource> | </EmbeddedResource> | ||||
<EmbeddedResource Include="ShowSimpleAccess.resx"> | |||||
<DependentUpon>ShowSimpleAccess.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<Content Include="NTFSSecurity-Help.xml"> | <Content Include="NTFSSecurity-Help.xml"> | ||||
@@ -146,7 +146,8 @@ | |||||
</TableColumnItem> | </TableColumnItem> | ||||
<TableColumnItem> | <TableColumnItem> | ||||
<ScriptBlock> | <ScriptBlock> | ||||
[Security2.FileSystemSecurity2]::ConvertToApplyTo($_.InheritanceFlags, $_.PropagationFlags) | |||||
[Security2.FileSystemSecurity2]::ConvertTo | |||||
($_.InheritanceFlags, $_.PropagationFlags) | |||||
</ScriptBlock> | </ScriptBlock> | ||||
</TableColumnItem> | </TableColumnItem> | ||||
<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 | //#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 | |||||
} | } |