Может ли DCOM убить приложение?
От: xlich  
Дата: 18.10.12 16:06
Оценка:
Добрый вечер(во всяком случае у нас )! Будет немного длинно, но, по-моему, это оправдано. Есть приложение (отдельное спасибо эксперту pugv за подсказки), забирающее по ОРС из RSView32 некоторые теги и отправляющее их в БД. Есть SCADA TraceMode, которая тоже берёт там же другие теги и использует их, как ей надо. В некоторый момент комп с TraceMode умер и его заменили новым. Естественно, что настройки DCOM на компе с TraceMode никто не помнит. Нахрапом настроить не получилось! Тогда — в ночную смену — два умника сели рядом с телефонами и компами и понеслась... Связи TraceMode c RSView так и не добились, но, после всех манипуляций, перестала запускаться и моя программа!!! Она находится на том же компе, что и RSView!!! Дело в том, что некоторые манипуляции с DCOM требуют перезагрузки компа. Моя программа стоит в автозагрузке, размещается в трее и никому не мешает. Хорошо, что (в общем-то, просто забыл) не выключил подробный лог, нужный для отладки. Поэтому, когда наехали, что в БД нет ни фига, из лога выяснил, что вылетаю после попытки подключиться к ОРС-серверу! Т.е. CoCreateInstance при подключении к серверу возвращает E_ACCESSDENIED Отсюда вопрос — что такого можно изменить в DCOM, чтобы перестало запускаться приложение на локальной машине?
Re: Может ли DCOM убить приложение?
От: 5er Россия  
Дата: 19.10.12 05:11
Оценка:
Здравствуйте, xlich, Вы писали:

X>Добрый вечер(во всяком случае у нас )! Будет немного длинно, но, по-моему, это оправдано. Есть приложение (отдельное спасибо эксперту pugv за подсказки), забирающее по ОРС из RSView32 некоторые теги и отправляющее их в БД. Есть SCADA TraceMode, которая тоже берёт там же другие теги и использует их, как ей надо. В некоторый момент комп с TraceMode умер и его заменили новым. Естественно, что настройки DCOM на компе с TraceMode никто не помнит. Нахрапом настроить не получилось! Тогда — в ночную смену — два умника сели рядом с телефонами и компами и понеслась... Связи TraceMode c RSView так и не добились, но, после всех манипуляций, перестала запускаться и моя программа!!! Она находится на том же компе, что и RSView!!! Дело в том, что некоторые манипуляции с DCOM требуют перезагрузки компа. Моя программа стоит в автозагрузке, размещается в трее и никому не мешает. Хорошо, что (в общем-то, просто забыл) не выключил подробный лог, нужный для отладки. Поэтому, когда наехали, что в БД нет ни фига, из лога выяснил, что вылетаю после попытки подключиться к ОРС-серверу! Т.е. CoCreateInstance при подключении к серверу возвращает E_ACCESSDENIED Отсюда вопрос — что такого можно изменить в DCOM, чтобы перестало запускаться приложение на локальной машине?


Из настроек OPC сервера эккаунт не удалили случаем?

Можно посмотреть системные логи.
Для этого установить следующие параметры реестра:
CallFailureLoggingLevel
ActivationFailureLoggingLevel
InvalidSecurityDescriptorLoggingLevel
и включить аудит на Logon и на Object access (failures).
Re[2]: Может ли DCOM убить приложение?
От: xlich  
Дата: 19.10.12 10:57
Оценка:
Здравствуйте, 5er, Вы писали:

5er>Из настроек OPC сервера эккаунт не удалили случаем?


5er>Можно посмотреть системные логи.

5er>Для этого установить следующие параметры реестра:
5er>CallFailureLoggingLevel
5er>ActivationFailureLoggingLevel
5er>InvalidSecurityDescriptorLoggingLevel
5er>и включить аудит на Logon и на Object access (failures).

Нет — аккаунт не удалён. Ввёл указанные ключи, настроил их по рекомендациям из ссылок, включил нужные аудиты, запускал приложение. Получил такое системное сообщение:

Настройки разрешений зависящие от конкретного приложения не предоставляют разрешение Локально Активация для приложения сервера COM Server с CLSID
{E9F9ED00-7705-101B-9802-0000C07B665C} пользователю PROG-CON\operator SID (S-1-5-21-1214440339-854245398-1177238915-1006). Это разрешение можно изменить с помощью средства администрирования Component Services.


что, в общем-то, и так было понятно. Настроил разрешение для пользователя таким образом, что ядро системы должно спрашивать у меня — запускаться или нет . Результат тот же! Попробую за выходные что-нибудь нагуглить. Не получится, останется самый верный способ — мочить винду и ставить RSView заново
Re[3]: Может ли DCOM убить приложение?
От: pugv Россия  
Дата: 22.10.12 11:34
Оценка:
X>

X>Настройки разрешений зависящие от конкретного приложения не предоставляют разрешение Локально Активация для приложения сервера COM Server с CLSID
X>{E9F9ED00-7705-101B-9802-0000C07B665C} пользователю PROG-CON\operator SID (S-1-5-21-1214440339-854245398-1177238915-1006). Это разрешение можно изменить с помощью средства администрирования Component Services.


X>что, в общем-то, и так было понятно. Настроил разрешение для пользователя таким образом, что ядро системы должно спрашивать у меня — запускаться или нет . Результат тот же! Попробую за выходные что-нибудь нагуглить. Не получится, останется самый верный способ — мочить винду и ставить RSView заново


Что значит спрашивать? Там (dcomcnfg -> Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM -> Ваш сервер -> Свойства -> Безопасность -> Разрешения на запуск и активацию) всего 4 разрешения — локальные/удаленные запуск и активация. Конкретному пользователю их можно либо дать, либо нет...
Re[4]: Может ли DCOM убить приложение?
От: xlich  
Дата: 22.10.12 12:25
Оценка:
Здравствуйте, pugv, Вы писали:

P>Что значит спрашивать?


Да это я так пошутил, видимо неудачно. Гугление практически ничем не помогло. А в итоге — сегодня, как и собирался, убил винду, всё заново переустановил — проблема исчезла, все довольны. Будет время — попробую поиграться с DCOM-ом, чтобы смоделировать ситуацию, может когда и пригодится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.