У меня очень странная вещь, которую я не могу победить пару дней. У меня есть самописная 32-разрядная служба на основе .NET (скомпилированная с флагом x86), которая работала на 64-разрядной машине Win 10 Pro, которая потребляет компонент DCOM {6F17505C-4351-46AC-BC1E-CDE34BB53FAA} (сервер OPC начал как Сервис). До Нью-Йорка он работал пару месяцев без проблем, но на прошлой неделе мой сервис не запустился с ошибкой 0x80070005.
System.UnauthorizedAccessException: экземпляр COM-компонента с CLSID {6F17505C-4351-46AC-BC1E-CDE34BB53FAA} не может быть создан IClassFactory из-за следующей ошибки: 80070005 Доступ запрещен (исключение HRESULT: 0x80070005 (E_ACCESSDENIED). на System.RuntimeTypeHandle.CreateInstance (типа RuntimeType, Boolean, Boolean publicOnly NOCHECK, Boolean & canBeCached, RuntimeMethodHandleInternal & CTOR, Boolean & bNeedSecurityCheck) в System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, булевой skipCheckThis, булевой fillCache, StackCrawlMark & stackMark) в System.RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark и stackMark) в System.Activator.CreateInstance (тип типа, Boolean nonPublic) в System.Activator.CreateInstance (тип типа) в OPCDA.NET.OpcServer.ConnecServer (String) .NET.OpcServer.Connect (String SrvName) ...
Обе службы работают под локальной системной учетной записью (SYSTEM), разрешения предоставляются в dcomcnfg для компонента для администраторов и системы и в реестре для HKEY_CLASSES_ROOT \ AppID {6F17505C-4351-46AC-BC1E-CDE34BB53FAA} (ну, я не вижу причин для проверка разрешений для этой ветки, но я много читал и тоже пробовал). Я также безуспешно пытался переустановить их все. Неустановленные обновления windows - не повезло. Есть несколько продуктов, установленных сторонними разработчиками, которые были установлены в это время, но я считаю, что это не может быть вредным для связи DCOM. Я также пробовал создать пользователя с правами администратора и запустить обе службы под этим пользователем.
Надеюсь, вы сможете предложить мне что-нибудь полезное в этой странной ситуации.
Что ж, я связался с производителем OPC Server, и служба поддержки сказала мне, что (свободный перевод с немецкого) «С начала этого года появляется много отчетов об ошибках, говорящих о том, что обновления Windows нарушают связь OPC». Итак, я удалил все обновления с конца декабря и - воля - теперь работает!
Служба поддержки предложила мне запустить следующую партию:
wusa /uninstall /kb:4056888 /quiet /norestart
wusa /uninstall /kb:4056890 /quiet /norestart
wusa /uninstall /kb:4056891 /quiet /norestart
wusa /uninstall /kb:4056892 /quiet /norestart
wusa /uninstall /kb:4056893 /quiet /norestart
wusa /uninstall /kb:4056897 /quiet /norestart
wusa /uninstall /kb:4056898 /quiet /norestart
но у меня не было ни одного из перечисленных. Жалко, но я не перечислил действительно удаленных обновлений (не могу найти историю обновлений в Win10, могу видеть только установленные обновления).