OleViewDotNet.COMRegistryViewer.LoadAppIDs C# (CSharp) Method

LoadAppIDs() private method

private LoadAppIDs ( bool filterIL, bool filterAC ) : void
filterIL bool
filterAC bool
return void
        private void LoadAppIDs(bool filterIL, bool filterAC)
        {
            List<IGrouping<Guid, COMCLSIDEntry>> clsidsByAppId = m_reg.ClsidsByAppId.ToList();
            IDictionary<Guid, COMAppIDEntry> appids = m_reg.AppIDs;            

            List<TreeNode> serverNodes = new List<TreeNode>();
            foreach (IGrouping<Guid, COMCLSIDEntry> pair in clsidsByAppId)
            {
                if (appids.ContainsKey(pair.Key))
                {
                    COMAppIDEntry appidEnt = appids[pair.Key];
                    
                    if (filterIL && String.IsNullOrWhiteSpace(COMUtilities.GetILForSD(appidEnt.AccessPermission)) &&
                        String.IsNullOrWhiteSpace(COMUtilities.GetILForSD(appidEnt.LaunchPermission)))
                    {
                        continue;
                    }

                    if (filterAC && !COMUtilities.SDHasAC(appidEnt.AccessPermission) && !COMUtilities.SDHasAC(appidEnt.LaunchPermission))
                    {
                        continue;
                    }

                    TreeNode node = new TreeNode(appidEnt.Name);
                    node.Tag = appidEnt;

                    StringBuilder builder = new StringBuilder();

                    AppendFormatLine(builder, "AppID: {0}", pair.Key);
                    if (!String.IsNullOrWhiteSpace(appidEnt.RunAs))
                    {
                        AppendFormatLine(builder, "RunAs: {0}", appidEnt.RunAs);
                    }

                    if (!String.IsNullOrWhiteSpace(appidEnt.LocalService))
                    {
                        AppendFormatLine(builder, "LocalService: {0}", appidEnt.LocalService);
                    }

                    string perm = appidEnt.LaunchPermissionString;
                    if (perm != null)
                    {
                        AppendFormatLine(builder, "Launch: {0}", LimitString(perm, 64));
                    }

                    perm = appidEnt.AccessPermissionString;
                    if (perm != null)
                    {
                        AppendFormatLine(builder, "Access: {0}", LimitString(perm, 64));
                    }

                    node.ToolTipText = builder.ToString();

                    int count = pair.Count();

                    TreeNode[] clsidNodes = new TreeNode[count];
                    string[] nodeNames = new string[count];
                    int j = 0;

                    foreach (COMCLSIDEntry ent in pair)
                    {
                        clsidNodes[j] = CreateClsidNode(ent);
                        nodeNames[j] = ent.Name;
                        j++;
                    }

                    Array.Sort(nodeNames, clsidNodes);
                    node.Nodes.AddRange(clsidNodes);

                    serverNodes.Add(node);
                }
            }

            treeComRegistry.Nodes.AddRange(serverNodes.ToArray());
            Text = "AppIDs";
        }