Как найти com объект

Время на прочтение
4 мин

Количество просмотров 7.6K

Обратная разработка программного обеспечения — процедура получения информации об алгоритме. При этом получение этих данных напрямую зависит от того, насколько много есть информации о приложении в документации, и от того, какой использовался способ для создания файла. Всё еще больше усложняется, если алгоритм заимствует фрагменты из других приложений или операционной системы. Эта статья расскажет о механизмах, которые заложены в ОС Windows, благодаря которым процесс обратной разработки может стать весьма сложным процессом.

С чего всё началось

Появление парадигмы объектно-ориентированного программирования подарило программистам очень мощные инструменты для обработки информации. Начали появляться новые языки, которые использовались для разных спектров задач, программное обеспечение становилось модульным. Написание новой программы с функционалом, который использовал стандартные механизмы ввода/вывода стало тривиальной задачей. Нужно было только подключить нужную библиотеку, которая уже содержала все необходимые функции.

Результатом использования парадигмы объектно-ориентированного подхода стали методы логического разбиения приложений на отдельные фрагменты, при этом можно было создавать уже скомпилированные части кода, которые собирались в новые приложения. Модульность позволила задуматься о механизмах, которые могли бы позволить объединять код, фрагменты которого были бы написаны на разных языках программирования, в одну систему, которая решала бы отдельно взятую проблему или целый класс проблем.

В операционной системе Windows подход к созданию отдельных компонентов был реализован в предоставлении унифицированных интерфейсов, которыми приложения пользуются и по сей день. Эти интерфейсы называются WinAPI. Их исследование достаточно тривиально, большая часть интерфейсов задокументирована и поэтому их обратная разработка заключается в том, чтобы найти в документации название и прочитать данные о параметрах и возвращаемом значении.

Каждый WinAPI интерфейс позволяет сделать минимальное действие, которое может произвести ОС, то есть если программист решит написать приложение, то для его реализации придётся задействовать несколько сотен, а то и тысяч интерфейсов. Отдельно стоит упомянуть, что это далеко не единственный способ, который доступен в ОС для реализации алгоритмов. ОС Windows также предлагает компонентный подход для построения приложений. Это означает, что программист может объединять целые программы вместе, чтобы реализовать выполнение алгоритма. Возможно это за счет использования механизма Component Object Module.

Появление COM не случайно, реализация этого механизма — логичный этап развития. На схеме ниже можно увидеть ретроспективу создания механизмов в ОС Windows:

Картинка наглядно показывает, как связано появление того или иного механизма. Реализация каждого нового механизма это решение проблем, которые возникли при реализации предыдущего механизма. Картинка включает в себя такие механизмы как OLE, COM+, DCOM, которые тоже, надо сказать очень сложные с точки зрения реализации и изучения.

Некоторые полезные определения

Представленная выше картинка с годами внедрения механизмов в ОС дает наглядное представление, что механизмы, которые сегодня используются, были созданы почти 22 года назад. Создание актуальной документации для такого длительного периода времени весьма сложная задача и соответственно, когда встает вопрос об обратной разработке ПО, которое использует указанные выше механизмы, нужно точно знать, ЧТО делает каждый из них.

COM дает возможность переиспользовать куски приложения. Работает за счет того, что можно собрать исполняемый кусок кода и расположить его в реестре ОС. Кусок кода получит уникальный идентификатор и будет вызывать ОС каждый раз, как приложения будут запрашивать обработку данных по идентификатору. Для создания кода можно использовать любой компилируемый язык программирования.

OLE – механизм связывания и внедрения данных в различные приложения. Больше всего распространен в приложениях, которые используются для офисных задач. Открытие таблицы Excel в документе Word самый распространенный пример использования механизма.

DCOM – механизм, который предоставляет возможность работать с объектами COM в рамках локальной сети или Интернета.

COM+ – механизм, который может быть использован для создания распределенного на целые кластера программного обеспечения. Включается в себя COM, предоставляет для объектов механизмы, которые позволяют с ними общаться по сети. Предоставляет механизмы по синхронизации, отказоустойчивости и разграничению доступа.

Примеры и практика

Давайте попробуем посмотреть, как обозначенные выше механизмы выглядят в ПО при обратной разработке. Начнем с OLE. Как было сказано выше, этот механизм проще всего обнаружить в офисных документах. Попробуем найти такой документ.

Для исследования был выбран вот этот документ. Он представляет собой docx файл, по сути это архив, который содержит некоторое количество файлов с инструкциями, как его рендерить. Заглянем внутрь: в этом формате все данные, которые могут быть добавлены через OLE это файлы, которые расположены в директории “word/embeddings”. Заголовок содержимого объекта можно видеть ниже:

Ничего особенно примечательного, такие объекты можно анализировать с использованием набор инструментов oletools.

OLE объект представляет собой файловую систему, в которую можно положить информацию необходимую для встраивания данных. Если воспользоваться инструментом oleobj, то можно увидеть, что внутри объекта находится txt файл. Кстати, это можно увидеть и из шестнадцатеричного редактора:

Объект COM – представление зависит от типа предоставляемого функционала, чаще всего в программном обеспечении используется в совокупности с WinAPI CoCreateInstance. Визуально исследовать объекты можно через относительно простой инструмент – COMView. Пример работы инструмента:

Почти все элементы пользовательского интерфейса, которыми мы пользуемся каждый день, это COM объекты.

Как найти объекты COM+? Если в COMView вы обнаружили объект, который имеет интерфейс IUnknown, перед вами COM+ объект. Например:

Таким образом можно установить, за какой функционал отвечает тот или иной объект, который используется программным обеспечением. При этом не нужно вникать в имплементацию и можно сразу разобраться в алгоритме приложения, прочитав описание объекта в интерфейсе COMView.


Статья подготовлена Александром Колесниковым в рамках курса “Reverse-Engineering. Professional”. Если интересно узнать больше о программе и формате обучения на этом курсе, приходите на день открытых дверей онлайн, на котором вы также сможете познакомиться с преподавателем.

Один из вариантов обмена данными между базами 1С это обмен через COM соединение. С помощью COM соединения можно из одной базы 1С подключиться к другой и прочитать или записать данные. Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах. В этой статье рассматривается такого рода соединений на платформа 8.3

Com соединение

Можно создать два вида COM объектов для приложения 1С. Это ole соединения  V83.Application и  com соединения  V83.COMConnector. В случае с V83.Application запускается практически полноценный экземпляр приложения 1С. В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны. В частности работа с формами и с общими модулями для которых не установлено свойство работы с внешними соединениями. Преимущественно надо использовать V83.COMConnector и только в случае нехватки функционала V83.Application. Особенно сильно разница в скорости работы может быть заметна на базах большого объема. Для платформе 8.2 используется V82.Application или V82.COMConnector

Установить OLE соединение

 Соединение = Новый COMОбъект("V83.Application"); 

Установить COM соединение

 Соединение = Новый COMОбъект("V83.COMConnector"); 

Строка подключения

 //Для варианта клиент- сервер
СтрокаСоединения = "Srvr = ""ИмяСервера"";Ref = ""ИмяБазы""; Usr = ИмяПользователя; Pwd = Пароль";
//Для варианта файлового режима:
СтрокаСоединения = "File = ""ПутьКБазе""; Usr = ИмяПользователя; Pwd = Пароль";
 Попытка 
Подключение = Соединение.Connect(СтрокаСоединения);
Исключение 
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось подключиться к базе" + ОписаниеОшибки(); Сообщение.Сообщить();
КонецПопытки; 

Разрыв соединения

 Соединение = Неопределено; 

Для объекта V83.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V83.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.И есть еще один маленький момент. Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.

Метод NewObject()

Для создания нового объекта  можно воспользоваться методом NewObject(), например: 

 // для V83.COMConnector
 Подключение = Соединение.Connect(СтрокаСоединения); 
 ЗапросCOM = Подключение.NewObject("Запрос"); 
ТаблицаCOM = Подключение.NewObject("ТаблицаЗначений");
МассивCOM = Подключение.NewObject("Массив");
УидCOM =Подключение.NewObject("УникальныйИдентификатор",СтрокаУИД); 

 //для V83.Application
 Соединение = Новый COMОбъект("V83.COMConnector");  
ЗапросOLE = Соединение.NewObject("Запрос"); 
ТаблицаOLE = Соединение.NewObject("ТаблицаЗначений");
МассивOLE = Соединение.NewObject("Массив");
УидCOM =Соединение.NewObject("УникальныйИдентификатор",СтрокаУИД); 

После создания Com объекта можно далее работать с ним, например

 ЗапросCOM.Текст ="ВЫБРАТЬ
| ДолжностиОрганизаций.Код,
| ДолжностиОрганизаций.Наименование
|ИЗ 
| Справочник.ДолжностиОрганизаций 
КАК ДолжностиОрганизаций";
Результат = ЗапросCOM.Выполнить(); 
Выборка = Результат.Выбрать(); 
Пока Выборка.Следующий() Цикл
// ........
КонецЦикла; 

Можно также использовать менеджеры объектов конфигурации:

 СправочникCOM = Подключение.Справочники.ИмяСправочника; 
 ДокументCOM = Подключение.Документы.ИмяДокумента; 
 РегистрCOM = Подключение.РегистрыСведений.ИмяРегистра; 

Получение и сравнение перечисления через COM соединение

Для сравнения значений элементов перечислений, определенных в конфигурации, необходимо выполнить преобразование этих элементов к одному из примитивных типов, сравнение которых не вызывает трудности. Такими типами могут быть либо числовой, либо строковый тип. Преобразовать значение элемента перечисления к числовому типу можно так

 ЭлементПеречисления = Подключение.Справочники.Справочник1.НайтиПоКоду(1).Реквизит1;
 ВозможныеЗначения = ЭлементПеречисления.Метаданные().ЗначенияПеречисления;
 НомерЭлементаПеречисления = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(Соединение.XMLString(ЭлементПеречисления)));
 Если НомерЭлементаПеречисления = 0 Тогда
   Сообщить("ЗначениеПеречисления1");
 ИначеЕсли НомерЭлементаПеречисления = 1 Тогда
   Сообщить("ЗначениеПеречисления2");
 КонецЕсли; 

Получение объекта через COM по идентификатору

Через  менеджеры объектов конфигурации получаем com объект, например :

 ДокументCOM = Соединение.Документы.ИмяДокумента; 

Затем получаем строку уникального идентификатора :

 СтрокаУИД=Соединение.string(ДокументCOM.УникальныйИдентификатор()); 

Затем в базе данных можно найти по ссылке нужный документ, таким образом:

 Идентификатор= Новый УникальныйИдентификатор(СтрокаУИД);
СсылкаПоИдентификатору = Документы[ИмяДокумента].ПолучитьСсылку(Идентификатор); 

Если нужно найти com объект по идентификатору,  то тогда нужно написать так:

 УидCOM = Соединение.NewObject("УникальныйИдентификатор",СтрокаУИД);
СсылкаПоИдентификатору = Соединение.Документы[ИмяДокумента].ПолучитьСсылку(УидCOM); 

Previous ArticleОтправка SMS

Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах.

Существует два вида COM объектов для приложения 1С:

Ole соединение V83.Application

Com соединение V83.COMConnector

В случае с V83.Application запускается практически полноценный экземпляр приложения . В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны.

В частности работа с формами и с общими модулями для которых, не установлено свойство работы с внешними соединениями. По большей части нужно использовать V83.COMConnector и только в случае нехватки функционала V83.Application.

Особенно сильно разница в скорости работы может быть заметна на базах большого объема.

Для платформы 1С 8.2 используется V82.Application или V82.COMConnector

Работу COM и OLE соединений к базе 1С 8 рассмотрим подробно:

Установить OLE соединение к 1С 8

Соединение = Новый COMОбъект(“V83.Application”);

Установить COM соединение к 1С 8

Соединение = Новый COMОбъект(“V83.COMConnector”);

Строка подключения к 1С 8

//Для варианта клиент – сервер

СтрокаСоединения = “Srvr = ““ИмяСервера”“;Ref = ““ИмяБазы”“; Usr = ИмяПользователя; Pwd = Пароль”;

//Для варианта файлового режима:

СтрокаСоединения = “File = ““ПутьКБазе”“; Usr = ИмяПользователя; Pwd = Пароль”;

Попытка

Подключение = Соединение.Connect(СтрокаСоединения);

Исключение

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = “Не удалось подключиться к базе” + ОписаниеОшибки(); Сообщение.Сообщить();

КонецПопытки;

Разрыв соединения с 1С 8

Соединение = Неопределено;

Для объекта V83.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V83.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.

И есть еще один маленький момент. Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.

Метод NewObject()

Для создания нового объекта можно воспользоваться методом NewObject(), например:

для V83.COMConnector

ЗапросCOM = Подключение.NewObject(“Запрос”);

ТаблицаCOM = Подключение.NewObject(“ТаблицаЗначений”);

МассивCOM = Подключение.NewObject(“Массив”);

УидCOM =Подключение.NewObject(“УникальныйИдентификатор”, СтрокаУИД);

для V83.Application

ЗапросOLE = Соединение.NewObject(“Запрос”);

ТаблицаOLE = Соединение.NewObject(“ТаблицаЗначений”);

МассивOLE = Соединение.NewObject(“Массив”);

УидCOM =Соединение.NewObject(“УникальныйИдентификатор”, СтрокаУИД);

После создания Com объекта можно далее работать с ним, например

ЗапросCOM.Текст =“ВЫБРАТЬ

| ДолжностиОрганизаций.Код,

| ДолжностиОрганизаций.Наименование

|ИЗ

| Справочник.ДолжностиОрганизаций

КАК ДолжностиОрганизаций”;

Результат = ЗапросCOM.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

КонецЦикла;

Можно также использовать менеджеры объектов конфигурации:

СправочникCOM = Подключение.Справочники.ИмяСправочника;

ДокументCOM = Подключение.Документы.ИмяДокумента;

РегистрCOM = Подключение.РегистрыСведений.ИмяРегистра;

Получение и сравнение перечисления через COM соединение

Для сравнения значений элементов перечислений, определенных в конфигурации, необходимо выполнить преобразование этих элементов к одному из примитивных типов, сравнение которых не вызывает трудности. Такими типами могут быть либо числовой, либо строковый тип. Преобразовать значение элемента перечисления к числовому типу можно так:

ЭлементПеречисления = Подключение.Справочники.Справочник1.НайтиПоКоду(1).Реквизит1;

ВозможныеЗначения = ЭлементПеречисления.Метаданные().ЗначенияПеречисления;

НомерЭлементаПеречисления = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(Соединение.XMLString(ЭлементПеречисления)));

Если НомерЭлементаПеречисления = 0 Тогда Сообщить(“ЗначениеПеречисления1”);

ИначеЕсли НомерЭлементаПеречисления = 1 Тогда Сообщить(“ЗначениеПеречисления2”);

КонецЕсли;

Получение объекта через COM по идентификатору

Через менеджеры объектов конфигурации получаем com объект, например :

ДокументCOM = Соединение.Документы.ИмяДокумента;

//Затем получаем строку уникального идентификатора :

СтрокаУИД = Соединение.string(ДокументCOM.УникальныйИдентификатор());

//Затем в базе данных можно найти по ссылке нужный документ, таким образом

Идентификатор = Новый УникальныйИдентификатор(СтрокаУИД);

СсылкаПоИдентификатору = Документы[ИмяДокумента].ПолучитьСсылку(Идентификатор);

//Если нужно найти com объект по документ по идентификатору, то тогда нужно написать так:

УидCOM = Соединение.NewObject(“УникальныйИдентификатор”,СтрокаУИД);

СсылкаПоИдентификатору = Соединение.Документы[ИмяДокумента].ПолучитьСсылку(УидCOM);


  • Download demo project – 124.8 KB

Image 1

Introduction

A programmer who works with Internet Explorer must pay attention to where the other extension DLLs are. This is because these other extension DLLs interact with Internet Explorer and generate new problems and features. The programmer has to deal with this situation. However, there are no documents about this. In this document, I will explain the detailed solution.

COM Component

COM is not a simple Win32 DLL. COM is created by the Interface and to call its function, use the Invoke function. For these reasons, the COM DLL’s function is not in the EXPORT table and cannot retrieve its entry point by GetPRocAddress. This is the reason why we cannot access its real code and why we cannot know its base DLL.

We can find out about all of a DLL’s base address and size with the ToolHelp API. However, in case of COM, the instance of the DLL is not in the DLL address area. So, we cannot compare the ToolHelp API’s result. For example, if we use function ABCD, in the case of a simple DLL, we use it as ABCD(); and we can get the address of the function by ABCD;. However, in the case of COM, we have to use it via the Invoke function. So, there is no raw access point of the ABCD function (method).

Internet Explorer and Connection Point

In order to receive an event from Internet Explorer, connect a COM object using the Connection Point interface. Just like a Virtual Function in C++, a connected COM object’s function will be called by Internet Explorer. If you want to know the details, please refer to books on COM. Connection objects have a Connection Point; this interface provides a method for enumerating connection points. To use this method, we can get the IUnknown interface pointer and the cookie value. The cookie value is used to connect to Internet Explorer.

To connect to Internet Explorer, an object uses the Advise and Unadvise functions. These functions’ result value is a cookie. It is a connection identifier. One funny tip is that the Unadvise function disconnects an object from Internet Explorer even if the cookie value is not yours. The IUnknown object which you get by this method has to release by the Release function. This is because, in the process of Enumeration (on the Enumeration function), AddRef is called and it increases the reference count.

Go into the COM

Let’s dig into the COM component. To know about COM, we start with implementation of a COM component. Open the Unknwn.h file and we can see the following code:

extern "C++"
{
    MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
    IUnknown
    {
    public:
        BEGIN_INTERFACE
        virtual HRESULT STDMETHODCALLTYPE QueryInterface(
             REFIID riid,
             void __RPC_FAR *__RPC_FAR *ppvObject) = 0;

        virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;

        virtual ULONG STDMETHODCALLTYPE Release( void) = 0;

        template<class>
    HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp)
    {
        return QueryInterface(__uuidof(Q), (void **)pp);
    }

        END_INTERFACE
    };
} 

The code says that the IUnknown interface consists of three Virtual functions. The Virtual function saves the implementation function’s address. To understand this code, you have to know about the implementation of the Virtual function. Let’s look at the following example to study the Virtual function:

class CVirtualTest {
public:
    virtual void VFunc1()
    {
    }

    virtual void VFunc2()
    {
    }
};

class CVirtualTest2 : public CVirtualTest{
public:
    void VFunc1()
    {
        DWORD dwEIP = 0;
        _asm {
            call GETEIP3
GETEIP3:
            pop eax
            mov dword ptr[dwEIP], eax
        }

        TRACE("CVirtualTest2::VFunc1 = EIP : %Xn", dwEIP);
    }

    void VFunc2()
    {
        DWORD dwEIP = 0;
        _asm {
            call GETEIP4
GETEIP4:
            pop eax
            mov dword ptr[dwEIP], eax
        }

        TRACE("CVirtualTest2::VFunc2 = EIP : %Xn", dwEIP);
    }
};

void main()
{
    CVirtualTest2 v;

    TRACE("v is %Xn", &v);

    v.VFunc1();
    v.VFunc2();
}

Let’s try debugging. First, set the break point to the main function and start the application. This is the result of TRACE and the debugger after the creation of v.

Image 2

We can see the addresses. The address of v is 0x0012F5F8 and that of __vfptr is 0x004154d8. The Virtual function’s addresses are 0x00401014 and 0x0040100a. As you can see, the Virtual Function Table’s real address is the real code’s address and if you know this address, we can know where the code is. By IUnknown‘s definition, IUnknown is a struct (class) which has a Virtual function. So, if we know exactly about the Virtual Function Table, we can say “We know IUnknown.” First, let’s see the CVirtualTest's address (0x12F5F8).

Image 3

We can see 0x004154D8 in 0x0012F5F8. Aren’t you familiar with this? Right! It is the same as __vfptr in the Debugger Window. In other words, __vfptr is the first member of struct when class only has the Virtual<code> function. Let’s go to the __vfptr‘s address.

Image 4

We can see 0x00401014, 0x0040<code>100A at 0x004154D8. These are the addresses of VFunc1 and VFunc2. At last, we get the Virtual function’s address. Collect this, go to the class object address and we can get the Virtual Function Table’s address. Go to the Virtual Function Table’s address and we can get each function’s address.

Integrate Codes

Back to the subject: find the connected Connection Points of Internet Explorer. This work can be done with IConnectionPoint::EnumConnections. We can get the IEnumConnections object from the EnumConnections method and get each connection information by the IEnumConnections::Next method. This returns CONNECTDATA. CONNECTDATA contains the IUnknown interface and we can get IDispatch through it. The IDispatch interface has a similar form as IUnknown and inherits from IUnknown.

IEnumConnections* pConn = NULL;
hr = pConnectionPoint->EnumConnections(&pConn);
if(!SUCCEEDED(hr)) {
    return ;
}

CONNECTDATA sConnData;
ULONG uRet = 0;

while(true) {
    uRet = 0;
    memset(&sConnData, 0, sizeof(CONNECTDATA));
    hr = pConn->Next(1, &sConnData, &uRet);

    if(hr != S_OK || uRet != 1)
        break;

    LPVOID* lpVFT = (LPVOID*)(sConnData.pUnk);

    if(IsBadReadPtr(lpVFT, sizeof(LPVOID)) == FALSE) {
        CString szOutput;
        szOutput.Format("Filename : %s, 0x%x", 
            GetProcessFileName( (DWORD)(*lpVFT) ), *lpVFT );
        OutputDebugString(szOutput):
    }

    sConnData.pUnk->Release();
}

In this code, we cast the IUnknown pointer to LPVOID* and confirm the address by using IsBadReadPtr. lpVFT‘s content is the Virtual Function Table’s address. So, *lpVFT is lpVFT[0]. In conclusion, it is the Virtual Function Table’s first element, the first function’s address. To compare this address with the ToolHelp API’s result, we can see what DLL has the function. The GetProcessFileName function does this work in the recently used code.

CString GetProcessFileName(DWORD dwAddress)
{
        BOOL        bRet     = FALSE;
    BOOL        bFound     = FALSE;
    HANDLE    hModuleSnap = NULL;
    MODULEENTRY32 me32 = {0};
    DWORD dwBase, dwSize;

    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId());
    if (hModuleSnap == INVALID_HANDLE_VALUE)
        return "";

    me32.dwSize = sizeof(MODULEENTRY32);

    if (Module32First(hModuleSnap, &me32))  {
        do  {
            dwBase = (DWORD)me32.modBaseAddr;
            dwSize = (DWORD)me32.modBaseSize;

            if((dwBase < dwAddress) && ((dwBase + dwSize) > dwAddress)) {
                CloseHandle(hModuleSnap);
                return me32.szExePath;
            }
        } while (Module32Next(hModuleSnap, &me32));
    }

    CloseHandle (hModuleSnap);

    return "";
}

Points of Interest

The COM component’s implementation is interesting. These days, Windows is almost wrapped by the COM component and we cannot do programming without COM. So, it’s important to understand COM component’s implementation.

History

  • 20th January, 2008: First release

Содержание

  1. Как посмотреть com объекты в Windows 10
  2. Способ 1. Используйте утилиту Component Services
  3. Способ 2. Используйте командную строку
  4. Способ 3. Используйте реестр
  5. Итог
  6. Как посмотреть com объекты windows 10
  7. Что такое com объекты?
  8. Как посмотреть com объекты в Windows 10?
  9. Как использовать Component Services?
  10. Итог
  11. Как посмотреть COM объекты в Windows 10
  12. Основные шаги:
  13. Более детально
  14. Шаг 1: Откройте командную строку
  15. Шаг 2: Введите команду RegEdit
  16. Шаг 3: Перейдите к следующему пути: HKEY_CLASSES_ROOTCLSID
  17. Шаг 4: Вы увидите список всех COM объектов, установленных на вашем компьютере
  18. Итог

Com объекты — это программные компоненты, встроенные в Windows 10. Они играют важную роль при создании приложений, позволяют им взаимодействовать с операционной системой и другими приложениями. Но как увидеть эти объекты? В этой статье мы рассмотрим несколько способов для их просмотра.

Способ 1. Используйте утилиту Component Services

Component Services — это инструмент, которому можно доверять при работе с Com объектами.

  1. Откройте меню «Пуск».
  2. Напишите «Component Services» в поисковой строке.
  3. Откройте Component Services из результатов поиска.
  4. Выберите «Компьютер» из списка слева.
  5. Нажмите правой кнопкой мыши на «Мой компьютер» и выберите «Свойства».
  6. Выберите вкладку «DCOM Config».
  7. Теперь вы увидите список всех Com объектов, установленных на вашем компьютере.

Способ 2. Используйте командную строку

Еще один способ для просмотра Com объектов — использование командной строки.

  1. Откройте меню «Пуск».
  2. Напишите «cmd» в поисковой строке.
  3. Нажмите правой кнопкой мыши на «Командная строка» и выберите «Запустить от имени администратора».
  4. Напишите следующую команду:

    mmc comexp.msc /32

  5. Нажмите Enter.
  6. Теперь вы увидите список всех Com объектов.

Способ 3. Используйте реестр

Windows 10 хранит информацию о Com объектах в реестре, и вы можете использовать эту информацию для их просмотра.

  1. Откройте меню «Пуск».
  2. Напишите «regedit» в поисковой строке.
  3. Нажмите Enter.
  4. Перейдите к следующему пути:

    HKEY_LOCAL_MACHINESOFTWAREClassesCLSID

  5. Теперь вы увидите список всех Com объектов, установленных на вашем компьютере.

Итог

Как вы видите, существует несколько способов для просмотра Com объектов в Windows 10. Мы рассмотрели некоторые из них, такие как использование утилиты Component Services, командной строки и редактора реестра. Вы можете выбрать любой подходящий для вас способ для выполнения этой задачи.

Windows 10 является одной из наиболее популярных операционных систем, которая имеет множество функций и инструментов. Все они выполняются благодаря сочетанию com объектов, которые являются основой для обеспечения производительности и удобства использования этой операционной системы. Поэтому необходимо знать, как посмотреть com объекты в Windows 10 — это поможет убедиться в правильности их работы и тем самым избежать различных ошибок.

Com объекты, или Component Object Model, являются компонентами операционной системы Windows. Они используются для организации и управления различными объектами, которые взаимодействуют между собой. Com-объекты позволяют пользователям использовать различные функции и приложения в Windows 10, такие как: MS Office, Internet Explorer, Word, Excel, PowerPoint и многие другие.

Посмотреть com объекты в Windows 10 можно с помощью специального инструмента — Component Services. Это приложение поможет контролировать и настраивать работу com объектов, а также узнать информацию о состоянии системы. Как открыть Component Services в Windows 10?

  1. Откройте меню «Пуск»;
  2. В поисковой строке введите «Component Services»;
  3. Найдите приложение в результате поиска;
  4. Нажмите на него правой кнопкой мыши и выберите «Запустить от имени администратора».

Как использовать Component Services?

После запуска Component Services вы можете проверить состояние com объектов, работающих на вашем компьютере, а также отслеживать и управлять их работой. Для этого следует выбрать нужный com объект и нажать на него правой кнопкой мыши. Выберите «Свойства» в контекстном меню и перейдите на вкладку «COM Security». Здесь вы можете настроить параметры безопасности и другие важные настройки.

Итог

Component Services — это важный инструмент, который позволяет контролировать и настраивать работу различных com объектов в Windows 10. Это приложение позволяет убедиться в правильности их работы и устранить проблемы и ошибки.

COM (Component Object Model) является стандартом для создания и использования компонентов в Windows. Это означает, что приложения могут использовать COM объекты для выполнения различных задач, таких как чтение и запись данных из файлов, работа с базами данных и многое другое.

Некоторые приложения могут создавать или использовать COM объекты, и иногда вам необходимо узнать, какие COM объекты доступны в вашей системе.

Основные шаги:

  1. Откройте командную строку
  2. Введите команду RegEdit
  3. Перейдите к следующему пути: HKEY_CLASSES_ROOTCLSID
  4. Вы увидите список всех COM объектов, установленных на вашем компьютере

Более детально

Чтобы найти COM объекты, доступные на вашей системе, следуйте указанным ниже шагам:

Шаг 1: Откройте командную строку

Чтобы открыть командную строку в Windows 10, выполните следующие действия:

  1. Нажмите правой кнопкой мыши на меню «Пуск» в левом нижнем углу экрана
  2. Выберите «Командная строка (администратор)»
  3. Если доступно, нажмите «Да», чтобы разрешить командной строке вносить изменения на компьютере

Шаг 2: Введите команду RegEdit

После того, как вы откроете командную строку, введите команду RegEdit и нажмите «Enter». Это откроет редактор реестра Windows, который позволяет просматривать и изменять настройки операционной системы.

Шаг 3: Перейдите к следующему пути: HKEY_CLASSES_ROOTCLSID

В редакторе реестра откройте путь HKEY_CLASSES_ROOTCLSID. На этой странице вы увидите список всех зарегистрированных COM объектов на вашем компьютере.

Шаг 4: Вы увидите список всех COM объектов, установленных на вашем компьютере

Вы можете посмотреть любой из объектов, чтобы узнать больше о нем. Некоторые объекты могут читаться, если вы щелкните по ним.

Примечание: начиная с Windows 10, установка COM объектов может осуществляться в разных местах. Если вы не можете найти их в HKEY_CLASSES_ROOTCLSID, вы можете попробовать найти их в других разделах ​​реестра или в папках программы.

Итог

С помощью этих простых шагов вы можете просмотреть список всех COM объектов, установленных на вашем компьютере.

Примечание: Будьте осторожны при изменении настроек реестра Windows. Не удаляйте или не изменяйте указанные значения, если вы не уверены, что делаете.

Добавить комментарий