/// <summary> /// Decompile the FileSharePermissions table. /// </summary> /// <param name="table">The table to decompile.</param> private void DecompileFileSharePermissionsTable(Table table) { foreach (Row row in table.Rows) { Util.FileSharePermission fileSharePermission = new Util.FileSharePermission(); fileSharePermission.User = (string)row[1]; string[] specialPermissions = UtilExtension.FolderPermissions; int permissions = (int)row[2]; for (int i = 0; i < 32; i++) { if (0 != ((permissions >> i) & 1)) { string name = null; if (16 > i && specialPermissions.Length > i) { name = specialPermissions[i]; } else if (28 > i && UtilExtension.StandardPermissions.Length > (i - 16)) { name = UtilExtension.StandardPermissions[i - 16]; } else if (0 <= (i - 28) && UtilExtension.GenericPermissions.Length > (i - 28)) { name = UtilExtension.GenericPermissions[i - 28]; } if (null == name) { this.Core.OnMessage(WixWarnings.UnknownPermission(row.SourceLineNumbers, row.Table.Name, row.GetPrimaryKey(DecompilerCore.PrimaryKeyDelimiter), i)); } else { switch (name) { case "ChangePermission": fileSharePermission.ChangePermission = Util.YesNoType.yes; break; case "CreateChild": fileSharePermission.CreateChild = Util.YesNoType.yes; break; case "CreateFile": fileSharePermission.CreateFile = Util.YesNoType.yes; break; case "Delete": fileSharePermission.Delete = Util.YesNoType.yes; break; case "DeleteChild": fileSharePermission.DeleteChild = Util.YesNoType.yes; break; case "GenericAll": fileSharePermission.GenericAll = Util.YesNoType.yes; break; case "GenericExecute": fileSharePermission.GenericExecute = Util.YesNoType.yes; break; case "GenericRead": fileSharePermission.GenericRead = Util.YesNoType.yes; break; case "GenericWrite": fileSharePermission.GenericWrite = Util.YesNoType.yes; break; case "Read": fileSharePermission.Read = Util.YesNoType.yes; break; case "ReadAttributes": fileSharePermission.ReadAttributes = Util.YesNoType.yes; break; case "ReadExtendedAttributes": fileSharePermission.ReadExtendedAttributes = Util.YesNoType.yes; break; case "ReadPermission": fileSharePermission.ReadPermission = Util.YesNoType.yes; break; case "Synchronize": fileSharePermission.Synchronize = Util.YesNoType.yes; break; case "TakeOwnership": fileSharePermission.TakeOwnership = Util.YesNoType.yes; break; case "Traverse": fileSharePermission.Traverse = Util.YesNoType.yes; break; case "WriteAttributes": fileSharePermission.WriteAttributes = Util.YesNoType.yes; break; case "WriteExtendedAttributes": fileSharePermission.WriteExtendedAttributes = Util.YesNoType.yes; break; default: Debug.Fail(String.Format("Unknown permission '{0}'.", name)); break; } } } } Util.FileShare fileShare = (Util.FileShare)this.Core.GetIndexedElement("FileShare", (string)row[0]); if (null != fileShare) { fileShare.AddChild(fileSharePermission); } else { this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerCore.PrimaryKeyDelimiter), "FileShare_", (string)row[0], "FileShare")); } } }
/// <summary> /// Decompile the FileSharePermissions table. /// </summary> /// <param name="table">The table to decompile.</param> private void DecompileFileSharePermissionsTable(Table table) { foreach (Row row in table.Rows) { Util.FileSharePermission fileSharePermission = new Util.FileSharePermission(); fileSharePermission.User = (string)row[1]; string[] specialPermissions = UtilExtension.FolderPermissions; int permissions = (int)row[2]; for (int i = 0; i < 32; i++) { if (0 != ((permissions >> i) & 1)) { string name = null; if (16 > i && specialPermissions.Length > i) { name = specialPermissions[i]; } else if (28 > i && UtilExtension.StandardPermissions.Length > (i - 16)) { name = UtilExtension.StandardPermissions[i - 16]; } else if (0 <= (i - 28) && UtilExtension.GenericPermissions.Length > (i - 28)) { name = UtilExtension.GenericPermissions[i - 28]; } if (null == name) { this.Core.OnMessage(WixWarnings.UnknownPermission(row.SourceLineNumbers, row.Table.Name, row.GetPrimaryKey(DecompilerCore.PrimaryKeyDelimiter), i)); } else { switch (name) { case "ChangePermission": fileSharePermission.ChangePermission = Util.YesNoType.yes; break; case "CreateChild": fileSharePermission.CreateChild = Util.YesNoType.yes; break; case "CreateFile": fileSharePermission.CreateFile = Util.YesNoType.yes; break; case "Delete": fileSharePermission.Delete = Util.YesNoType.yes; break; case "DeleteChild": fileSharePermission.DeleteChild = Util.YesNoType.yes; break; case "GenericAll": fileSharePermission.GenericAll = Util.YesNoType.yes; break; case "GenericExecute": fileSharePermission.GenericExecute = Util.YesNoType.yes; break; case "GenericRead": fileSharePermission.GenericRead = Util.YesNoType.yes; break; case "GenericWrite": fileSharePermission.GenericWrite = Util.YesNoType.yes; break; case "Read": fileSharePermission.Read = Util.YesNoType.yes; break; case "ReadAttributes": fileSharePermission.ReadAttributes = Util.YesNoType.yes; break; case "ReadExtendedAttributes": fileSharePermission.ReadExtendedAttributes = Util.YesNoType.yes; break; case "ReadPermission": fileSharePermission.ReadPermission = Util.YesNoType.yes; break; case "Synchronize": fileSharePermission.Synchronize = Util.YesNoType.yes; break; case "TakeOwnership": fileSharePermission.TakeOwnership = Util.YesNoType.yes; break; case "Traverse": fileSharePermission.Traverse = Util.YesNoType.yes; break; case "WriteAttributes": fileSharePermission.WriteAttributes = Util.YesNoType.yes; break; case "WriteExtendedAttributes": fileSharePermission.WriteExtendedAttributes = Util.YesNoType.yes; break; default: Debug.Fail(String.Format("Unknown permission '{0}'.", name)); break; } } } } Util.FileShare fileShare = (Util.FileShare) this.Core.GetIndexedElement("FileShare", (string)row[0]); if (null != fileShare) { fileShare.AddChild(fileSharePermission); } else { this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerCore.PrimaryKeyDelimiter), "FileShare_", (string)row[0], "FileShare")); } } }