![]() |
|
|
![]()
|
|
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
Добрый день.
Собственно интересно в каких случаях СОМ может вернуть что нету прав на использование объекта? Как вообще узнать причину? Может вопросы и глупые, но с СОМ не работал практически и понять что к чему трудновато. Зарание благодарен! |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
COM использует модель системы безопасности Windows (с ACL листами и идентификаторами пользователяей). Любой объект может установить права на доступ к себе (причем разные для разных действий) Access Denied и есть причина - нет прав на запрошенное действие. Запустите dcomcnfg в закладке Component Services -> ... -> DCOM Config найдете некоторые настройки |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
Запустил, но найти требуемый интерфейс не выходит...Открыл свойства первого попавшегося, на вкладке Безопасность все не активное - нужны права системы чтоле)) Смотрел под админом...... Ага AIMP норм все - можно изменять, тут понятно - сенкс. Осталось найти IID_IEncodingFilterFactory GUID {70bdde00-c18e-11d0-a9ce-006097942311} , ток не наблюдаю да и не просто среди этих гуидов искать нужный - как опытные люди ищут там то что надо?) +спасибо за быстрый ответ! |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
еще добавлю, мож бывале "поглубже" и можете что-то сказать
На самом деле когда подебажыть решил что там к чему urlmon!CoInternetIsFeatureEnabledInternalEx() возвращает ошибку. Лазит там по всяким тейблам непонятным не находит чегото и ретурнит FALSE. Как понимаю она тут не причём, т.е. IEncodingFilterFactoryl->GetDefaultFilter() непричасна к ошибке, она только не находит значений и возвращает еррор. Получаеться что виновата тогда CoCreateInstance( CLSID_StdEncodingFilterFac, IID_IEncodingFilterFactory ), которая успешно инитит но не полностью весь интерфейс, а ток часть его. Может стоит вызывать не CoCreateInstance() а что-то более "тонконастраиваемое" like CoCreateInstanceEx() или CoGetInstanceFromIStorage()?? Дабы в итоге иметь ошибку еще на криейт инстанс.. Ну и вопросец - может ли быть такое что на данный момент просто нету доступа к обжекту, например он занят в том же треде, самим тредом, т.е. повторная инициализация или мож CoInitializeEx() был вызван ранее для текущего треда и после того как я вызываю CoInitialze() оно какбы все норм, но в итоге нету доступа к некоторым моментам... угу, не знаю я СОМ потому уже мысли разные летают в голове по этому поводу, может и бредовые - но ищу выход в безвыходном положении. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Нет, это не поможет. А вот настроить security самого COM перед созданием объектов можно - см. CoInitializeSecurity в частности и Security in COM вообще |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
да, всетаки приложение настраивает секурити перед работой.. стек: 0012f7cc 6b8bd15c 00000000 ffffffff 00000000 0012f7dc 00000000 00000002 00000003 00000000 0012f7ec 00000000 00000000 dwAuthnLevel = RPC_C_AUTHN_LEVEL_CONNECT dwImpLevel = RPC_C_IMP_LEVEL_IMPERSONATE dwCapabilities = EOAC_NONE пробовал поменять значения в стеке, т.е. изменить параметры dwAuthnLevel = RPC_C_AUTHN_LEVEL_NONE dwImpLevel = RPC_C_IMP_LEVEL_IDENTIFY dwCapabilities = =EOAC_APPID приложение выходит, т.е. не проходит ему такая муля, немного почитав и почти нифига не поняв - решил еще пораспрашивать: RPC_C_IMP_LEVEL_IMPERSONATE - This level of impersonation can be used to access local resources such as files. - чо за ресурсы? - кажеться мне что именно это и не нравиться приложению..хотя поменял все помимо оного - тож вываливаеться к чему веду - да к тому что если я вручную потом поменяю на дефолтные значения, не вывалиться ли приложение изза этого? - пусть даже на время распаковки поменяю, но тредов то много,а секурити для процесса устанавливаеться.. Добавлено через 8 минут и 9 секунд тут вот подумал, может по другому мне можно както воспользоваться IEncodingFilterFactory, дабы под эти параметры норм работало? dwAuthnLevel = RPC_C_AUTHN_LEVEL_CONNECT dwImpLevel = RPC_C_IMP_LEVEL_IMPERSONATE dwCapabilities = EOAC_NONE |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
попробовал установить CoInitializeSecurity( NULL, -1, 0, 0, 2, 3, NULL, 0, NULL ); - в тестовом приложении, без результатно, т.е. декомпресит нормально, значит трабла не в этом(
может есть возможность както блокировать определённые методы?? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Судя по этому - у вас трабла с настройками безопасности Интернета. Откройте Интернет Эксплорер, в нем Сервис -> Свойства Обозревателя -> [Закладка] Безопасность. Крутите настройки там (urlmon их берет оттуда) |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
в ИЕ в настройках безопасности настроил все на минимум - ничего не дало( это что-то с самими СОМ обжектаме, т.к. CoInternetIsFeatureEnabledInternalEx() ничего толком не делает - лазяет по тейблам и возвращает значения в соответствии к ним. ПОдозреваю что тейблы формируются при CoCreateInstance(), как происходит вызов и чо там тот урлмун недоинициализирует не известно...Знаю ток то что пытался наглым образом подменить GetDefaultFilter() т.е. когда она вернула еррор, я делаю S_OK и записываю в указатель на IDataFilter, указатель на сам IDataFilter в урмоне, т.е. тот что должен был вернуть мне GetDefaultFilter(), пытаюсь распаковать но оно E_ABORT возвращает, видать надо еще чего делать с теми обжектаме дабы они воркать стали( уже в недоумении полном - если работать с ап фф например = все норм работает, а ие выпендриваеться - мож там действительно на перехваченом треде уже криейтнутый инстанс и вот беду делает потому? Добавлено через 2 минуты и 48 секунд хотя не
ну и потом дешифровка норм робит.. |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
в урлмуне проверка на имя процесса стоит, для ие действуют правила с реестра, если нету ключика - присваивается дефаулт значение - запретить.)
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |