/// <summary> /// Constructor /// </summary> /// <param name="objName">Descriptive name of the object</param> /// <param name="pObject">Managed wrapper to the object</param> /// <param name="properties">List of textual properties to display</param> /// <param name="interfaces">List of available interfaces</param> public ObjectInformation(COMRegistry registry, ICOMClassEntry entry, string objName, object pObject, Dictionary <string, string> properties, COMInterfaceEntry[] interfaces) { m_entry = entry; if (m_entry == null) { Guid clsid = COMUtilities.GetObjectClass(pObject); if (registry.Clsids.ContainsKey(clsid)) { m_entry = registry.MapClsidToEntry(clsid); } } m_registry = registry; m_pEntry = ObjectCache.Add(registry, objName, pObject, interfaces); m_pObject = pObject; m_properties = properties; m_interfaces = interfaces.OrderBy(i => i.Name).ToArray(); m_objName = objName; InitializeComponent(); LoadProperties(); LoadInterfaces(); Text = m_objName; listViewInterfaces.ListViewItemSorter = new ListItemComparer(0); }
private async void btnLoadFromStream_Click(object sender, System.EventArgs e) { try { MemoryStream stm = new MemoryStream(hexEditor.Bytes); Guid clsid; object obj = COMUtilities.OleLoadFromStream(new MemoryStream(hexEditor.Bytes), out clsid); await EntryPoint.GetMainForm(m_registry).HostObject(m_registry.MapClsidToEntry(clsid), obj, false); } catch (Exception ex) { EntryPoint.ShowError(this, ex); } }
public CustomMarshalEditorControl(COMRegistry registry, COMObjRefCustom objref) { m_objref = objref; m_registry = registry; InitializeComponent(); textBoxClsid.Text = objref.Clsid.FormatGuid(); COMCLSIDEntry ent = registry.MapClsidToEntry(objref.Clsid); if (ent != null) { textBoxName.Text = ent.Name; } hexEditor.Bytes = objref.ObjectData; }
void IActivationFilter.HandleActivation(uint dwActivationType, ref Guid rclsid, out Guid pReplacementClsId) { pReplacementClsId = rclsid; lock (this) { if (_writer == null) { return; } COMCLSIDEntry entry = _registry?.MapClsidToEntry(rclsid); if (entry == null) { _writer.WriteLine("dwActivationType: 0x{0:X} rclsid: {1}", dwActivationType, rclsid); } else { _writer.WriteLine("dwActivationType: 0x{0:X} rclsid: {1} name '{2}'", dwActivationType, rclsid, entry.Name); } } }
private async void menuObjectFromSerializedStream_Click(object sender, EventArgs e) { using (OpenFileDialog dlg = new OpenFileDialog()) { dlg.Filter = "All Files (*.*)|*.*"; if (dlg.ShowDialog(this) == DialogResult.OK) { try { using (Stream stm = dlg.OpenFile()) { Guid clsid; object obj = COMUtilities.OleLoadFromStream(stm, out clsid); await HostObject(m_registry.MapClsidToEntry(clsid), obj, obj is IClassFactory); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
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; }
public StandardMarshalEditorControl(COMRegistry registry, COMObjRefStandard objref) { m_objref = objref; m_registry = registry; InitializeComponent(); textBoxStandardFlags.Text = String.Format("0x{0:X}", objref.StdFlags); textBoxPublicRefs.Text = objref.PublicRefs.ToString(); textBoxOxid.Text = String.Format("0x{0:X016}", objref.Oxid); textBoxOid.Text = String.Format("0x{0:X016}", objref.Oid); textBoxIpid.Text = objref.Ipid.FormatGuid(); textBoxApartmentId.Text = COMUtilities.GetApartmentIdStringFromIPid(objref.Ipid); int pid = COMUtilities.GetProcessIdFromIPid(objref.Ipid); textBoxProcessId.Text = COMUtilities.GetProcessIdFromIPid(objref.Ipid).ToString(); try { Process p = Process.GetProcessById(pid); textBoxProcessName.Text = p.ProcessName; } catch (ArgumentException) { textBoxProcessName.Text = "N/A"; } COMObjRefHandler handler = objref as COMObjRefHandler; if (handler != null) { textBoxHandlerClsid.Text = handler.Clsid.FormatGuid(); COMCLSIDEntry ent = registry.MapClsidToEntry(handler.Clsid); if (ent != null) { textBoxHandlerName.Text = ent.Name; } } else { tableLayoutPanel.Controls.Remove(lblHandlerClsid); tableLayoutPanel.Controls.Remove(lblHandlerName); tableLayoutPanel.Controls.Remove(textBoxHandlerClsid); tableLayoutPanel.Controls.Remove(textBoxHandlerName); } foreach (COMStringBinding str in objref.StringBindings) { ListViewItem item = listViewStringBindings.Items.Add(str.TowerId.ToString()); item.SubItems.Add(str.NetworkAddr); item.Tag = str; } listViewStringBindings.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); listViewStringBindings.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); foreach (COMSecurityBinding sec in objref.SecurityBindings) { ListViewItem item = listViewSecurityBindings.Items.Add(sec.AuthnSvc.ToString()); item.SubItems.Add(sec.PrincName); item.Tag = sec; } listViewSecurityBindings.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); listViewSecurityBindings.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
public ElevatedFactoryServerTypeViewer(COMRegistry registry, COMCLSIDEntry entry, string objName, object obj) { InitializeComponent(); _obj = obj; _name = objName; _registry = registry; _entry = entry; if (_entry != null && _entry.Elevation != null) { foreach (COMCLSIDEntry vso in _entry.Elevation.VirtualServerObjects.Select(v => registry.MapClsidToEntry(v))) { comboBoxClass.Items.Add(vso); } if (comboBoxClass.Items.Count > 0) { comboBoxClass.SelectedIndex = 0; } } }