Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IEncodingFilterFactory & e_accessdenied, GetDefaultFilter( "gzip") 
V
    Опции темы
ASMatic
Дата 4.3.2011, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



Добрый день.
Собственно интересно в каких случаях СОМ может вернуть что нету прав на использование объекта?
Как вообще узнать причину? Может вопросы и глупые, но с СОМ не работал практически и понять что к чему трудновато.
Зарание благодарен!
PM MAIL   Вверх
xvr
Дата 4.3.2011, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(ASMatic @  4.3.2011,  14:14 Найти цитируемый пост)
Собственно интересно в каких случаях СОМ может вернуть что нету прав на использование объекта?
Если нету прав, вестимо  smile 
COM использует модель системы безопасности Windows (с ACL листами и идентификаторами пользователяей). Любой объект может установить права на доступ к себе (причем разные для разных действий)
Цитата(ASMatic @  4.3.2011,  14:14 Найти цитируемый пост)
Как вообще узнать причину?
Access Denied и есть причина - нет прав на запрошенное действие.

Запустите dcomcnfg в закладке Component Services -> ... -> DCOM Config найдете некоторые настройки


PM MAIL   Вверх
ASMatic
Дата 4.3.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



Цитата(xvr @  4.3.2011,  12:33 Найти цитируемый пост)
Запустите dcomcnfg в закладке Component Services -> ... -> DCOM Config найдете некоторые настройки

Запустил, но найти требуемый интерфейс не выходит...Открыл свойства первого попавшегося, на вкладке Безопасность все не активное - нужны права системы чтоле)) Смотрел под админом...... Ага AIMP норм все - можно изменять, тут понятно - сенкс. Осталось найти IID_IEncodingFilterFactory GUID {70bdde00-c18e-11d0-a9ce-006097942311} , ток не наблюдаю да и не просто среди этих гуидов искать нужный - как опытные люди ищут там то что надо?)
+спасибо за быстрый ответ!
PM MAIL   Вверх
ASMatic
Дата 4.3.2011, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



еще добавлю, мож бывале "поглубже" и можете что-то сказать
На самом деле когда подебажыть решил что там к чему urlmon!CoInternetIsFeatureEnabledInternalEx() возвращает ошибку. Лазит там по всяким тейблам непонятным не находит чегото и ретурнит FALSE. Как понимаю она тут не причём, т.е. IEncodingFilterFactoryl->GetDefaultFilter() непричасна к ошибке, она только не находит значений и возвращает еррор.  Получаеться что виновата тогда CoCreateInstance( CLSID_StdEncodingFilterFac, IID_IEncodingFilterFactory ), которая успешно инитит но не полностью весь интерфейс, а ток часть его. Может стоит вызывать не CoCreateInstance() а что-то более "тонконастраиваемое" like CoCreateInstanceEx() или CoGetInstanceFromIStorage()?? Дабы в итоге иметь ошибку еще на криейт инстанс.. Ну и вопросец - может ли быть такое что на данный момент просто нету доступа к обжекту, например он занят в том же треде, самим тредом, т.е. повторная инициализация или мож CoInitializeEx() был вызван ранее для текущего треда и после того как я вызываю CoInitialze() оно какбы все норм, но в итоге нету доступа к некоторым моментам...
угу, не знаю я СОМ потому уже мысли разные летают в голове по этому поводу, может и бредовые - но ищу выход в безвыходном положении.
PM MAIL   Вверх
xvr
Дата 4.3.2011, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(ASMatic @  4.3.2011,  15:17 Найти цитируемый пост)
Может стоит вызывать не CoCreateInstance() а что-то более "тонконастраиваемое" like CoCreateInstanceEx() или CoGetInstanceFromIStorage()??

Нет, это не поможет. А вот настроить security самого COM перед созданием объектов можно - см. CoInitializeSecurity в частности и Security in COM вообще

PM MAIL   Вверх
ASMatic
Дата 4.3.2011, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



Цитата(xvr @  4.3.2011,  13:27 Найти цитируемый пост)
А вот настроить security самого COM перед созданием объектов можно 

да, всетаки приложение настраивает секурити перед работой..
стек:
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
PM MAIL   Вверх
ASMatic
Дата 4.3.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



попробовал установить  CoInitializeSecurity( NULL, -1, 0, 0, 2, 3, NULL, 0, NULL ); - в тестовом приложении, без результатно, т.е. декомпресит нормально, значит трабла не в этом(
может есть возможность както блокировать определённые методы??
PM MAIL   Вверх
xvr
Дата 4.3.2011, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(ASMatic @  4.3.2011,  17:06 Найти цитируемый пост)
RPC_C_IMP_LEVEL_IMPERSONATE - This level of impersonation can be used to access local resources such as files. - чо за ресурсы? 
Это значит, что COM объект на сервере, который был создан по запросу пользователя, будет во всей дальнейшей работе с системой прикидываться этим самым пользователем. Это значит, что если он попытается открыть файл, то система будет проверять права на доступ к файлу от имени пользователя, а не от имени сервера, где COM объект крутится

Цитата(ASMatic @  4.3.2011,  20:07 Найти цитируемый пост)
может есть возможность както блокировать определённые методы?? 

Судя по этому -
Цитата(ASMatic @  4.3.2011,  15:17 Найти цитируемый пост)
urlmon!CoInternetIsFeatureEnabledInternalEx() возвращает ошибку
у вас трабла с настройками безопасности Интернета. Откройте Интернет Эксплорер, в нем Сервис -> Свойства Обозревателя -> [Закладка] Безопасность. Крутите настройки там (urlmon их берет оттуда)


PM MAIL   Вверх
ASMatic
Дата 4.3.2011, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



Цитата(xvr @  4.3.2011,  19:32 Найти цитируемый пост)
у вас трабла с настройками безопасности Интернета

в ИЕ в настройках безопасности настроил все на минимум - ничего не дало(
это что-то с самими СОМ обжектаме, т.к. CoInternetIsFeatureEnabledInternalEx() ничего толком не делает - лазяет по тейблам и возвращает значения в соответствии к ним. ПОдозреваю что тейблы формируются при CoCreateInstance(), как происходит вызов и чо там тот урлмун недоинициализирует не известно...Знаю ток то что пытался наглым образом подменить GetDefaultFilter() т.е. когда она вернула еррор, я делаю S_OK и записываю в указатель на IDataFilter, указатель на сам IDataFilter в урмоне, т.е. тот что должен был вернуть мне GetDefaultFilter(), пытаюсь распаковать но оно E_ABORT возвращает, видать надо еще чего делать с теми обжектаме дабы они воркать стали(
уже в недоумении полном - если работать с ап фф например = все норм работает, а ие выпендриваеться - мож там действительно на перехваченом треде уже криейтнутый инстанс и вот беду делает потому?

Добавлено через 2 минуты и 48 секунд
хотя не
Код

    rc = CoCreateInstance( &CLSID_StdEncodingFilterFac,
                           NULL,
                           CLSCTX_INPROC_SERVER,
                           &IID_IEncodingFilterFactory,
                           (LPVOID*)&pEflt );

    rc = CoCreateInstance( &CLSID_StdEncodingFilterFac,
                           NULL,
                           CLSCTX_INPROC_SERVER,
                           &IID_IEncodingFilterFactory,
                           (LPVOID*)&pEflt );
    if( rc != S_OK )
        return rc;

    pEflt->lpVtbl->GetDefaultFilter( pEflt,
                             L"gzip",
                             L"text",
                             &pDF );

    pEflt->lpVtbl->GetDefaultFilter( pEflt,
                             L"gzip",
                             L"text",
                             &pDF );


ну и потом дешифровка норм робит..
PM MAIL   Вверх
ASMatic
Дата 8.3.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: нет
Всего: 1



в урлмуне проверка на имя процесса стоит, для ие действуют правила с реестра, если нету ключика - присваивается дефаулт значение - запретить.)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.