private void SetupClsidEntry(COMCLSIDEntry entry)
{
textBoxClsidName.Text = entry.Name;
textBoxClsid.Text = entry.Clsid.FormatGuid();
textBoxServerType.Text = entry.DefaultServerType.ToString();
textBoxThreadingModel.Text = entry.DefaultThreadingModel.ToString();
textBoxServer.Text = entry.DefaultServer;
textBoxCmdLine.Text = GetStringValue(entry.DefaultCmdLine);
textBoxTreatAs.Text = GetGuidValue(entry.TreatAs);
btnTreatAsProps.Enabled = m_registry.Clsids.ContainsKey(entry.TreatAs);
var progids = m_registry.Progids;
foreach (string progid in m_registry.GetProgIdsForClsid(entry.Clsid).Select(p => p.ProgID))
{
ListViewItem item = listViewProgIDs.Items.Add(progid);
if (progids.ContainsKey(progid))
{
item.Tag = progids[progid];
}
}
listViewProgIDs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
foreach (Guid catid in entry.Categories)
{
ListViewItem item = listViewCategories.Items.Add(COMUtilities.GetCategoryName(catid));
item.Tag = catid;
}
listViewCategories.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
LoadInterfaceList(entry.Interfaces, listViewInterfaces);
LoadInterfaceList(entry.FactoryInterfaces, listViewFactoryInterfaces);
tabPageSupportedInterfaces.Tag = entry;
tabControlProperties.TabPages.Add(tabPageClsid);
tabControlProperties.TabPages.Add(tabPageSupportedInterfaces);
if (m_registry.AppIDs.ContainsKey(entry.AppID))
{
SetupAppIdEntry(m_registry.AppIDs[entry.AppID]);
}
IEnumerable <COMInterfaceEntry> proxies = m_registry.GetProxiesForClsid(entry);
if (proxies.Any())
{
foreach (COMInterfaceEntry intf in proxies.OrderBy(i => i.Name))
{
ListViewItem item = listViewProxies.Items.Add(intf.Name);
item.SubItems.Add(intf.Iid.FormatGuid());
item.Tag = intf;
}
listViewProxies.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
listViewProxies.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
listViewProxies.ListViewItemSorter = new ListItemComparer(0);
tabControlProperties.TabPages.Add(tabPageProxies);
}
if (entry.Servers.Count > 1)
{
foreach (COMCLSIDServerEntry server in entry.Servers.Values)
{
ListViewItem item = listViewCLSIDServers.Items.Add(server.ServerType.ToString());
item.SubItems.Add(server.Server);
item.SubItems.Add(server.CommandLine);
item.SubItems.Add(server.ThreadingModel.ToString());
item.Tag = server;
}
listViewCLSIDServers.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
listViewCLSIDServers.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
listViewCLSIDServers.ListViewItemSorter = new ListItemComparer(0);
tabControlProperties.TabPages.Add(tabPageServers);
}
SetupTypeLibVersionEntry(m_registry.GetTypeLibVersionEntry(entry.TypeLib, null));
if (entry.Elevation != null)
{
textBoxElevationEnabled.Text = entry.Elevation.Enabled.ToString();
textBoxElevationAutoApproval.Text = entry.Elevation.AutoApproval.ToString();
textBoxElevationIconReference.Text = GetStringValue(entry.Elevation.IconReference);
foreach (COMCLSIDEntry vso in entry.Elevation.VirtualServerObjects.Select(v => m_registry.MapClsidToEntry(v)))
{
ListViewItem item = listViewElevationVSOs.Items.Add(vso.Name);
item.SubItems.Add(vso.Clsid.ToString());
item.SubItems.Add(vso.CanElevate.ToString());
item.SubItems.Add(vso.AutoElevation.ToString());
item.Tag = vso;
}
listViewElevationVSOs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
listViewElevationVSOs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
listViewElevationVSOs.ListViewItemSorter = new ListItemComparer(0);
tabControlProperties.TabPages.Add(tabPageElevation);
}
if (entry.Servers.ContainsKey(COMServerType.InProcServer32) && entry.Servers[COMServerType.InProcServer32].HasDotNet)
{
COMCLSIDServerDotNetEntry dotnet = entry.Servers[COMServerType.InProcServer32].DotNet;
textBoxDotNetAssemblyName.Text = dotnet.AssemblyName;
textBoxDotNetClassName.Text = dotnet.ClassName;
textBoxDotNetCodeBase.Text = dotnet.CodeBase;
textBoxDotNetRuntimeVersion.Text = dotnet.RuntimeVersion;
tabControlProperties.TabPages.Add(tabPageDotNet);
}
m_clsid = entry;
}