Как узнать приложение по clsid
P.S. Решение я нашёл одно, но как вы считаете верное ли оно?
Подключил к проекту:
Но возникла большия проблема! Я не знаю CLSID других програм, попробовал покопаться в реестре, перепробывал значения, бесполезно, выдаёт ошибку. Что бы вы посоветовали в данном случае? Может программа для определения CLSID есть или обходной вариант, который будет действовать на всех компьютерах? __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Не удалось получить фабрику COM для компонента с CLSID
Доброго времени суток! Хотел поинтересоваться, может кто-то сталкивался с похожей проблемой как у.
Работа с com объектом - Не удалось получить фабрику класса COM для компонента с CLSID
На Windows XP данный код загружается и прекрасно работает, а на Windows 7 выдает ошибку. Для работы.
VelZeVuL, Однако по ссылке ответа на вопрос не нашёл. Просто интересно как узнать CLSID например того же SkyPe который лежит по пути: "C:\Program Files (x86)\Skype\Phone\Skype.exe".
Просто в реестре ответа не нашёл, либо пропускаю всё время.
Может к сисадминам обратиться, ведь частично вопрос именно к ним?
Ошибка FileVault clsid-not-found
При работе с проводником многократно выскакивает ошибка. Чаще всего при открытии папок и нажатии.
Получение CLSID image/png
Всем ку! int GetEncoderClsid(const WCHAR* format, CLSID* pClsid) < UINT num = 0; .
удалил штук 8 ключей в CLSID (
удалил штук 8 ключей в CLSID, когда пытался избавиться от WebAlta после этого перестали.
Запись строки в doc через CLSID
Доброго времени суток. Как с помощью clsid записать в doc текст. Вот как производится открытие : .
Эти 10016 событий записываются, когда компоненты Microsoft пытаются получить доступ к компонентам DCOM без необходимых разрешений. Эти события обычно можно безопасно игнорировать, потому что они не влияют отрицательно на функциональность и являются преднамеренными.
Параметры разрешений для конкретного приложения не предоставляют разрешение локальной активации для приложения COM-сервера с CLSID и APPID пользователю NT AUTHORITY LOCAL SERVICE SID (S-1-5-19) с адреса LocalHost (с использованием LRPC), запущенного в контейнере приложения. Недоступный SID (недоступен). Это разрешение безопасности можно изменить с помощью инструмента администрирования служб компонентов.
Параметры разрешений для конкретного приложения не предоставляют локальную активацию
- Определите и подтвердите CLSID и APPID
- Измените владельца ключа CLSID из редактора реестра
- Изменить разрешение безопасности из служб компонентов
Прочтите, чтобы узнать подробности о шагах.
Затем щелкните значок Передовой кнопка.
По умолчанию этот ключ принадлежит TrustedInstaller, но вам нужно изменить владельца на администратора. Для этого нажмите кнопку Изменять кнопка в Расширенные настройки безопасности окно> напишите «Администратор»> щелкните Проверить имена кнопку> щелкните Ok кнопка.
Также вам нужно выбрать Заменить владельца подконтейнеров и объектов флажок.
После этого выберите Администраторы от Группы или имена пользователей список и отметьте Разрешить / Полный доступ флажок. Теперь сохраните ваши настройки.
Вам нужно сделать то же самое, что и выше, чтобы изменить владельца этого ключа реестра.
Если у вас возникла проблема с изменением владельца ключа реестра, вы можете воспользоваться нашим бесплатным инструментом RegOwnit, который позволяет сделать это одним щелчком мыши.
Далее перейдите к Безопасность таб. Здесь можно найти три метки, в том числе Разрешения на запуск и активацию. Щелкните соответствующий Редактировать кнопка.
После добавления выбирайте по одному и дайте Локальный запуск и Локальная активация разрешения для них обоих.
Сохраните изменения, вы больше не получите ту же проблему в средстве просмотра событий.
Независимо от того, возникла ли у вас проблема с RuntimeBroker, Immersive Shell или любым другим процессом, решение будет одинаковым для всех.
Информации очень мало.
Мои дополнения:
(честно говоря сильно не вдавался в чтение). Только пощупал реестр и справочники и Google.
Способы использования CLSID (GUID)
1) создание новой папки с именем Любое Имя.
2) через ПУСК -> Выполнить (или комбинацией клавиш Win + R)
затем так:
где GUID - идентификатор одной из Special Folder (см. под спойлером).
В MSDN часть виртуальных папок и псевдонимов можно найти среди KnownFolderID.
Не все они будут работать с рассматриваемым синтаксисом. Это зависит от способа их регистрации в системе (при чём это может различаться от версии к версии).
3) через ПУСК -> набрать в строке поиска:
3.1.) используя псевдоним:
Псевдонимы можно взять из имен параметров в разделах:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Выбрать вид папки -> Таблица.
Нажать левый ALT, View (вид) -> Choose details. (Выбрать столбцы. ) -> отметить галкой "AppUserModelID"
*Update: в новых билдах Windows 10, Microsoft спрятала эту опцию. Альтернативно, получить AppId можно, нажав правой кнопкой мыши по интересующему приложению из папки shell:AppsFolder => Выбрать создать ярлык => Согласиться на создание ярлыка на рабочем столе.
Затем разобрать ярлык с помощью программы-парсера, например, lnk_parser_cmd.exe (см. в аттаче). Вас должно интересовать значение параметра типа 0x001f (VT_LPWSTR) с ID 15, которое необходимо будет подставить в explorer.exe shell:AppsFolder\<значение>
Список псевдонимов, CLSID (GUID)
Синим отмечены папки, которые появились в Windows 8.
Дополнительные ключи для explorer.exe:
Проводник
explorer.exe [/n][/e] [(,)/root,<folder>] [/select,<object>]
/n - открытие нового окна, если уже открыто окно, то оно дублируется (для ОС >= Vista неактуально).
/e - с отображением дерева папок принудительно.
/idlist,:handle: process specifies object as ITEMIDLIST in shared memory block with given handle in context of given process. Подробности здесь.
/root - <folder> в качестве корня вместо "Рабочего стола".
/root,/idlist,:handle: process (без пробела)
/root,clsid
/root,clsid,path
/root,path
/select - <object> выделить объект.
/separate - запуск Проводника в отдельном процессе.
Примеры (Windows 7, вероятно и др.):
Теперь мои вопросы и я не жду, что получу на них ответы (постепенно и сам буду искать их):
Возьмем для примера:
CLSID:
Физ. расположение: C:\ProgramData\Microsoft\Windows\Start Menu\Programs
1) О дополнительніх параметрах HKCR\CLSID:
В статье от Koza Nozdri говориться про:
а) HKCR\CLSID\\InprocServer32
Под этим разделом еще есть подразделы:
б) MergedFolder с параметром Location , значение, к примеру, @shell32.dll,-4177
rundll32.exe говорит, что это не точка входа функции, значит ресурс.
Ага вот. Windows 8 DLL File Information - shell32.dll
говорит, что это якобы строка "Current User" . Подразумевается от какого имени пользователя будет запущена?
в) ShellFolder с параметром Attributes , значение, к примеру, 0x28100000 (672137216)
О чем нам говорит этот атрибут?
2) CLSID и GUID - каково соотношение этих понятий?
Где-то и читал, но забыл. Своими словами можно.
3) Почему некоторые GUID, можно подставлять только в shell. , но не в explorer :: ?
4) Как связан GIUD с его псевдонимом и физическим расположением каталога на диске?
По-другому: откуда система знает какие файлы/физ+вирт.папки (объекты) должны находится в этой виртуальной папке?
5) Можно ли зарегистрировать свой собственный псевдоним с GUID?
Вложения
Dragokas
Very kind Developer
Частично ответ на № 4) касаемо Canonical Name
Just wrote a little Powershell script to cycle through CLSID and get all the GUIDS that contains a "ShellFolder" and a key called "LocalizedString"So if anyone can't sleep tonight, you could sit down and figure out what is hidden behind these GUID's
Вот что я первое нашел вручную:
HKCR\CLSID\
LocalizedString = @%SystemRoot%\System32\biocpl.dll,-1
System.ApplicationName = Microsoft.BiometricDevices
->> shell.
Только вот не пойму biocpl.dll,-1
- это вроде иконка, а не строка. Продолжаю выяснять.Забавно ( win + tab ):
Shell.
Dragokas
Very kind Developer
Процитирую некоторые ответы от Казакевича Олега.
1) По поводу HKCR\CLSID\<. >\ShellFolder - Attributes
Не уверен, что поможет, но кое-что есть здесь:
Implementing the Basic Folder Object Interfaces
Плотно с этой темой я не работал, так что прокомментировать не могу.
2) GUID (или UUID, что одно и то же) - это обобщенное название для любого
идентификатора, вне зависимости от того, где и как он используется.
CLSID - это тот же GUID, только название другое. CLSID используется в COM,
отсюда и название (CLaSs IDentifier - идентификатор класса). Есть еще,
например, LIBID (LIBrary IDentifier - идентификатор библиотеки типов),
IID (Interface IDentifier - идентификатор COM-интерфейса) и т.д.
Т.е. CLSID - это тот же GUID/UUID, просто называется по-другому, чтобы читающему
код сразу было понятно, откуда идентификатор.
4) Как связан GIUD с его псевдонимом и физическим расположением каталога на диске?
По-другому: откуда система знает какие файлы/физ+вирт.папки (объекты) должны находится в этой виртуальной папке?
Система этого не знает. За отображение содержимого папки и работу с ним (copy-paste,
drag-n-drop, properties и т.п.) отвечает соответствующий объект, реализующий нужные интерфейсы.
В MSDN есть кое-что по данной теме, но без хорошего понимания COM туда лучше не соваться.
5) Можно ли зарегистрировать свой собдственный псевдоним с GUID?
Ты имеешь в виду, можно ли создать свою виртуальную папку, такую как, например,
"сетевое окружение" ? Да, можно. Сошлюсь, опять же, на MSDN, отправная точка здесь: Windows Shell
CLSID — это глобальный уникальный идентификатор, идентифицирующий объект COM-класса. Если сервер или контейнер допускают связывание со встроенными объектами, необходимо зарегистрировать идентификатор CLSID для каждого поддерживаемого класса объектов.
Ключ реестра
HKey _ _ \ Классы программного обеспечения локального компьютера \ \ CLSID \ CLSID >
Раздел реестра | Описание |
---|---|
ИД | Связывает AppID с идентификатором CLSID. |
аутоконвертто | Задает автоматическое преобразование данного класса объектов в новый класс объектов. |
аутотреатас | Автоматически задает для идентификатора CLSID для ключа треатас указанное значение. |
ауксусертипе | Указывает краткое отображаемое имя приложения и имена приложений. |
Управление | определяет объект как элемент управления ActiveX. |
Преобразование | Используется диалоговым окном Преобразование для определения форматов, которые приложение может читать и записывать. |
DataFormats | Указывает форматы данных по умолчанию и основные параметры, поддерживаемые приложением. |
дефаултикон | Содержит сведения о значке по умолчанию для однообъектных презентаций. |
инпрочандлер | Указывает, использует ли приложение пользовательский обработчик. |
InprocHandler32 | Указывает, использует ли приложение пользовательский обработчик. |
инпроксервер | Указывает путь к DLL внутрипроцессного сервера. |
InprocServer32 | Регистрирует 32-разрядный внутрипроцессный сервер и задает потоковую модель апартамента, в которой может работать сервер. |
Insertable | Указывает, что объекты этого класса должны отображаться в диалоговом окне « Вставка объекта » в списке при использовании приложениями-контейнерами com. |
Интерфейс | Необязательная запись, указывающая все идентификаторы интерфейса (идентификаторов IID), поддерживаемые связанным классом. |
локалсервер | Указывает полный путь к 16-разрядному приложению локального сервера. |
LocalServer32 | Указывает полный путь к 32-битному локальному серверному приложению. |
мискстатус | Указывает, как создать и отобразить объект. |
ProgID: | Связывает идентификатор ProgID с идентификатором CLSID. |
ToolBoxBitmap32 | Определяет имя модуля и идентификатор ресурса для точечного рисунка размером 16 x 16, который будет использоваться для кнопки панели инструментов или панели элементов. |
треатас | Указывает идентификатор CLSID класса, который может эмулировать текущий класс. |
Команда | Указывает команды для регистрации в приложении. |
Версия | Указывает номер версии элемента управления. |
версиониндепендентпрогид | Связывает идентификатор ProgID с идентификатором CLSID. Это значение используется для определения последней версии объектного приложения. |
Remarks
Ключ _ _ \ \ классов программного обеспечения файла hKey на локальном компьютере соответствует _ _ корневому ключу classes , который был сохранен для совместимости с предыдущими версиями com.
Ключ CLSID содержит сведения, используемые обработчиком COM по умолчанию для возврата сведений о классе, когда он находится в состоянии выполняется.
Чтобы получить идентификатор CLSID для приложения, можно использовать Uuidgen.exe или функцию CoCreateGuid .
Читайте также: