CLSID — что это такое?
Приветствую. Данная заметка посвящена аббревиатуре CLSID. Постараемся выяснить предназначение. Напишу простыми словами, чтобы было понятно каждому.
CLSID — что это?
Уникальный идентификатор COM-класса, используется для вызова обьектов — например папки или окна определенных настроек.
Может использоваться при написании софта, утилит (например на языке программирования C#).
Применение. Например можно создать директорию с расширением, в качестве которого — указать идентификатор CLSID:
В Windows 10 работает например такой способ использования CLSID — передаем идентификатор системной оболочке (Проводник), которая обрабатывает идентификатор и отображает его содержимое. Например зажмите кнопки Win + R > появится окно Выполнить > вставьте данную команду:
После нажатия ОК — откроется Панель управления. Таким образом можно создать и ярлык на рабочем столе, указав в поле расположение обьекта — данную команду.
Идентификаторов — много, с некоторыми из них можно ознакомиться здесь.
Мои мысли
В принципе CLSID — в некотором смысле системные ярлыки (точнее указатели) для показа определенных системных настроек, папок.
При разработке приложения можно использовать данные указатели для функции открытия определенных настроек, директорий или для других задач.
Простому обычному пользователю наиболее полезным будет создание ярлыков. Например контекстное меню Пуска (Win + X) последних билдов Windows 10 уже не содержит пункта Панель управления — можно создать его ярлык на рабочем столе (указав нужный CLSID), после — закрепить плиткой в меню Пуск. Поэтому данные идентификаторы — полезная вещь.
Заключение
- CLSID — системный идентификатор на определенный обьект (папка, окно настроек).
- Можно применять для создания ярлыков.
Что такое clsid
1. Указывайте версию Вашей ОС.
2. Запрещается размещать запросы и ссылки на кряки, серийники и т.п., а также вопросы нарушения лицензии ПО и его взлома.
3. Не разрешается давать советы из разряда «Поставь Linux».
4. Переустановка ОС — крайнее и безотказное лекарство, которое знают все. В таких советах никто не нуждается.
5. При публикации скриптов пользоваться тегами code. Тип подсветки кода выбирать строго в соответствии с языком публикуемого кода.
6. Прежде чем задать вопрос, обязательно загляните в FAQ и следуйте написанным рекомендациям для устранения проблемы. И если не помогло, а поиск по разделу не дал результатов — только тогда задавайте вопрос на форуме.
7. Вопросы, связанные с проблемами ПО, задавайте в разделе Программное обеспечение
Модераторы: Akina
‘> Что такое CLSID.
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
Сообщ. #1 , 16.03.04, 11:54
Senior Member
Рейтинг (т): 11
Ребята! Что такое CLSID?? Выглядит примерно так <35CEC8A3-2BE6-11D2-8773-92E220524153>, если я не ошибаюсь..35CEC8A3-2BE6-11D2-8773-92E220524153>
Сообщ. #2 , 16.03.04, 12:46
Senior Member
Рейтинг (т): 8
дык забыл уж все я. вобщем не совсем правильно — но суть такая:
имхо, COM-сервер регистрируешь и у него есть такой вот уникальный идентификатор
нужен для того чтобы ты мог обратится к предоставляемым COM-интерфейсам
В программистком разделе спроси — там точно скажут.
Сообщ. #3 , 16.03.04, 13:04
Рейтинг (т): 0
По CLSID (class id) можно найти нужный тебе интерфейс и дергать из него методы . COM — он и в африке COM.
Сообщ. #4 , 17.03.04, 06:41
Senior Member
Рейтинг (т): 11
Спасибо большое, понял куда копать.
Так сом-сервер он я так понимаю один в виндах. А те объекты, которые имеют clsid — это ком-компоненты или интерфейсы, к методам которых можно обращаться посредством этого сlsid. Или сервер для каждого сом-объекта свой? Ладно разберемся..
Сообщ. #5 , 18.03.04, 10:51
Рейтинг (т): 0
Ком сервер — exe или dll файл
Сообщ. #6 , 18.03.04, 12:17
Рейтинг (т): 352
Каждый COM-сервер (каковым является сервер автоматизации) и каждый класс COM-объектов обладает уникальным 128-битовым идентификатором GIUD (Global Unique Identifier). При обращении к классам COM-объектов он иногда называется CLSID (идентификатор класса). При создании COM-серверов (в том числе и серверов автоматизации) GUID и CLSID генерируются автоматически, при необходимости можно сгенерировать их с помощью вызова стандартной функции Windows API CoCreateGUID. Информация обо всех COM-серверах и классах COM-объектов хранится в системном реестре, что позволяет клиенту «не знать», в каком каталоге (или на каком компьютере локальной сети) находится COM-сервер.
Что такое ключ реестра CLSID?
CLSID или идентификатор класса — это строка буквенно-цифровых символов (как цифр, так и символов алфавита), которые используются для представления определенного экземпляра объектной модели компонентов или программы на основе COM. Это позволяет операционным системам и программному обеспечению, особенно для Windows, обнаруживать программные компоненты и получать к ним доступ, не идентифицируя их по именам. Хотя Microsoft постепенно отказалась от использования COM в пользу инфраструктуры .NET, COM по-прежнему используется в качестве важного компонента для многих широко используемых программ, и его выпуск не планируется.
Примеры объектов, использующих COM и соответствующий CLSID, включают ActiveX, каталог «Мой компьютер» и меню «Пуск» Windows. Типичный CLSID в реестре Windows может выглядеть так:
Скорее всего, вы столкнетесь с CLSID, когда веб-сайт попросит вас обновить ActiveX или другую программу. Ваш браузер определяет версию вашего программного обеспечения, проверяя его CLSID, и передает эту информацию на веб-сайт, не подвергая риску ваш компьютер.
Однако поддельные обновления часто используются для распространения вредоносного программного обеспечения и других угроз для ПК, и вам следует избегать загрузки обновлений с веб-сайтов, которым вы не доверяете безоговорочно.
Когда хорошая запись CLSID становится плохой
Если CLSID поврежден, на вашем ПК могут возникнуть проблемы, связанные с программой, с которой связан CLSID; одной из распространенных проблем является повреждение CLSID, в результате чего программное обеспечение не может проверить свою собственную версию и обновить себя. Как простое в реализации решение, удаление и переустановка вашего программного обеспечения обычно устраняет эту проблему.
Наиболее распространенная проблема, связанная с записью CLSID в реестре, — это неспособность программы удалить свой CLSID из реестра при удалении остальной части программы. Хотя это плохая практика программирования, которая загромождает реестр ПК бессмысленными текстовыми записями, неиспользуемая запись CLSID вряд ли навредит вашему компьютеру. Однако некоторые программы очистки реестра и другие программы обслуживания системы специализируются на удалении этого «мусора» на основе CLSID. В очень экстремальных обстоятельствах, например, на компьютере с низкими системными ресурсами, реестр со слишком большим количеством неиспользуемых записей CLSID может вызвать проблемы с производительностью.
Если вы заинтересованы в исправлении записей реестра CLSID вручную, следует проявлять большую осторожность. Изменения в вашем реестре могут повредить вашу операционную систему разными способами, в первую очередь из-за того, что она не сможет распознавать важные компоненты и программы. Независимо от того, заинтересованы ли вы во внесении изменений в записи CLSID вашего компьютера, во всех случаях рекомендуется иметь резервную копию реестра Windows через точку восстановления системы или другим способом.
Исчезающий CLSID
Хотя CLSID обычно является постоянной текстовой записью в вашем реестре — по крайней мере, до тех пор, пока вы не удалите программу, с которой он связан, временные папки и файлы также могут отображать записи CLSID в своих именах. Это часто происходит из-за того, что установщики программ распаковывают файлы для использования перед их удалением. Большинство таких файлов и папок должны автоматически удаляться после завершения установки. В случае плохого кодирования или прерванной установки вам может потребоваться удалить эти объекты самостоятельно, хотя они не должны повредить ваш компьютер.
Не все программы, использующие CLSID, вынуждены записывать свои записи CLSID в реестр Windows. Компоненты COM без RegFree или Registration Free могут хранить свои записи CLSID в своих собственных EXE-файлах или в отдельных XML-файлах. Это имеет определенные преимущества, такие как возможность установки программы несколько раз в виде нескольких разных версий. Однако поддержка RegFree COM более ограничена и иногда (в случае общесистемных программ, таких как DirectX) полностью недоступна.
Разница между COM CLSID и остальной вселенной COM
COM-интерфейс с CLSID представляет собой компонентную объектную модель, метод взаимодействия, использующий философию объектно-ориентированного программирования (или ООП). Он не имеет прямого отношения к суффиксу веб-домена .COM, который означает «коммерческий» домен верхнего уровня.
Точно так же COM-компоненты CLSID не связаны с файлами .COM, которые являются подтипом исполняемого или EXE-файла. Хотя некоторые компоненты Windows и другие программы используют .COM, для этого устаревшего формата файлов требуется эмуляция MS-DOS, которая не включена (по умолчанию) в 64-разрядные ОС Windows.
Место CLSID в индустрии вредоносных программ
Записи CLSID могут использоваться для запуска как вредоносных, так и безопасных программ. Руткиты, трояны, вредоносные вспомогательные объекты браузера и другие типы вредоносных программ могут использовать систему CLSID для автоматического запуска или при возникновении определенных условий. Большинство компетентных антивирусных программ обнаруживают и удаляют вредоносные записи CLSID вместе со связанными с ними вредоносными программами. Однако, как и обычные записи CLSID, неудаленные записи вредоносных программ CLSID для удаленных программ не могут нанести вред вашему компьютеру.
Также известно, что вредоносные программы используют записи CLSID для вызовов других программ (таких как Internet Explorer). Эти программы могут отображать или не отображать видимые признаки того, что они открыты, хотя в большинстве случаев вы должны быть в состоянии обнаружить процесс памяти открытой программы с помощью диспетчера задач и подобных утилит. Такие атаки могут использоваться для проведения различных онлайн-атак без ведома пользователя ПК. Хотя знание CLSID необязательно для случайного использования ПК, знание его возможностей и ограничений на практике может помочь устранять ошибки, связанные с программным обеспечением и реестром, с минимальными трудностями.
Windows Немного о CLSID
Из справки microsoft следует,объект clsid имеет право на то,что бы его называли программой-оболочкой для глобального уникального идентификатора (GUID) для COM-класса.
А так же приведу цитату следующего содержания:
CLSID — аббревиатура для идентификатора класса, точно так же как GUID — аббревиатура для глобального уникального идентификатора. Обе аббревиатуры являются 128-битными (16 байт) целыми числами с малой вероятностью совпадения, поэтому они могут быть использованы в компьютерах и сетях в качестве уникальных идентификаторов. Обычно идентификатор представляется либо 16-элементным байтовым массивом либо специально отформатированной строкой шестнадцатеричных цифр (где символы a—f или A—F представляют десятичные цифры 10—15. Это строковое представление состоит либо из 32 последовательных шестнадцатеричных цифр, либо из групп, состоящих из 8, 4, 4, 4 и 12 шестнадцатеричных цифр, разделенных дефисами. Строковое представление с дефисами при необходимости может быть заключено в фигурные или круглые скобки (<>).
Хм,хм. то есть ключ clsid по сути является уникальным именем ,сгенерированный по определенному принципу и несущим в себе ссылку на объект,имя которого было сгенерировано в код CLSID.
Так,давайте немного практики.
Здесь я описал несколько примеров использования ключей CLSID.
Кроме того разного рода функционал может быть добавлен в автозагрузку,использован в каких то своих целях.
Что бы сравнить возможности,я попрошу вас заглянуть в эти три темы по очереди:
Параметры команды shell
Краткий справочник по CLSID
И например вот эта
Посмотрев эти темы мы убедимся,что функционал CLSID довольно обширен и мощный.
глобально-уникальный идентификатор, определяющий тип СОМ-объекта. Каждый тип СОМ-объекта (элемент) имеет в реестре свой CLSID, по которому его можно загрузить и контролировать из других приложений.
В реестре мы найдем перечень всех имеющихся ключей CLSID по этому адресу :
HKEY_CLASSES_ROOT\CLSID
Но стоп!
что же это с ними за подразделы с параметрами?
Такие как этот:
HKEY_CLASSES_ROOT\CLSID\\InprocServer32
раздел реестра |Описание
AppID |Зависимые AppID с CLSID.
AutoConvertTo | Задает автоматическое преобразование данного класса объектов, в новый класс объектов.
AutoTreatAs | Автоматически устанавливает CLSID для TreatAs ключ к указанному значению.
AuxUserType |Определяет короткие имена и отображаемое имя приложения.
Control | Определяет объект как элемент Управления ActiveX.
Conversion | Используется Conversion диалоговое окно для определения форматов.
DataFormats |Определяет форматы по умолчанию и данные, которые поддерживаются приложением.
DefaultIcon | Иконка используемая по умолчанию для объекта.
InprocHandler | Указывает, использует ли приложение пользовательский обработчик.
InprocHandler32 | Указывает, использует ли приложение пользовательский обработчик.
InprocServer | Задает путь к in-process server DLL.
InprocServer32 | Регистрация 32-bit in-process server и определяет модель потоков на сервере,которые могут работать в домашней группе.
Insertable | Указывает на то, что у объекта этого класса должно появиться в Insert Object диалоговое окно списка при использовании COM-контейнер приложений.
Interface | Указывает, что у объекта этого класса должен появиться в Insert Object диалоговом окне списка, когда используется приложениями COM контейнеров.
LocalServer |Задает полный путь к 16-бит локального сервера приложений.
LocalServer32 | LocalServer32 определяет местоположение приложения COM-сервера для запуска приложений локального сервера.
MiscStatus |Определяет, как создать и отобразить объект.
ProgID | Ассоциированные ProgID с CLSID.
ToolBoxBitmap32 | Определяет имя модуля и идентификатор ресурса для изображения (16 х 16) используемого для панели инструментов или кнопки панели инструментов.
TreatAs | Определяет CLSID класса, могут имитировать текущий класс.Эмуляция проявляется в способности одного приложения открывать и редактировать объект другого класса, сохраняя исходный формат объекта.
Verb | Определяет глаголы, которые будут зарегистрированы для приложения.
Version | Указывает номер версии управления.
VersionIndependentProgID | Ассоциированные ProgID с CLSID. Это значение используется, чтобы определить последнюю версию объекта application.