Я пытаюсь реализовать IOpenControlPanel интерфейс, который не описывался в таких сайтах , как Pinvoke.net , поэтому для решения этой задачи я построил определение с нуля , как я думаю , что они должны быть, то я попытался вручную извлечь интерфейс CLSID из реестра, который , как представляется D11AD862-66DE-4DF4-BF6C-1F5621996AF1 , и класс , который реализует этот inferface, который , как представляется 06622D85-6856-4460-8DE1-A81921B41C4B .
Проблема заключается в том, что в следующем коде Если я вызываю GetCurrentView функцию я не получаю ожидаемое значение, и вызов Open функции не делает ничего (я использую правильное каноническое имя , как , Microsoft.DefaultPrograms как описано в этой статье MSDN из этого списка канонических имен .)
Так что, я думаю, что мои определения неверны в некотором роде, мне нужна помощь, чтобы исправить это.
К ним относятся определения:
C # (онлайн перевод):
Ваше определение интерфейса является неправильным , потому что вы не определены методами в том же порядке , как это делает MSDN (на самом деле, имена не важны, важно то раскладка методы интерфейса: соответствие двоичных подписей в правильном порядке). Порядок должен быть именно то , что определено в .h файлах , доступных с Windows SDK, а не то , что MSDN дисплеи — это на самом деле вводит в заблуждение :-). В этом случае файл заголовка Shobjidl.h. Это , как это определено в C / C ++:
Есть несколько эквивалентного определения в .NET, C #, но вот один, который должен работать:
Делюсь решением одной проблемки. Вдруг у кого-то тоже будет подобное.
Симптомы проблемы:
“Тормоза” в сетевых подключениях
При клике правой кнопкой мыши по сетевому подключению компьютер подвисает надолго, контекстное меню не отображается. IP-адрес приходилось менять в реестре.
Ошибки в журнале событий
С завидной регулярностью в журнал системы вываливается одна и та же ошибка:
В диспетчере служб данный сервер не запущен, хотя и стоит в “Авто”. Пробую запустить вручную – ошибка:
Ну что же, даже пока не знаю с чего начать. Очевидно, что проблема с WMI. Будем разбираться откуда ноги растут.
Диагностика и решение проблемы
Несмотря на то, что решение оказалось не очень сложным, я довольно долго к этому шёл. При беглом гуглении решения не нашлось, перепробовал многое. В итоге самостоятельно пришёл к следующему:
Выясняем параметры работы службы
Идём в раздел системного реестра, отвечающего за службу WMI:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetserviceswinmgmtParameters
Видим следующее: Параметр ServiceDll указывает на DLL в каталоге wbem. Пройдём в этот каталог.
Отсутствие необходимых компонентов
В каталоге данного файла не оказалось. Как это могло произойти – не знаю, возможно он был повреждён (chkdsk что-то там исправлял), но так или иначе файл я не нашёл.
Данной службы в диспетчере сервисов я не нашёл, но прикинул, что она мне не особо так и нужна в качестве зависимой. Взял и просто удалил запись об этой службе (смотрите параметр DependOnService, в котором перечислены службы, от которых зависит данный сервис), как о необходимой для запуска. Перезагрузился и диспетчер печати стартанул нормально!
А я мучался несколько месяцев.
В панеле мотинторинга всетится ошибка «В сети: не удается получить даные ролей и компонентов»
посмотрел логи нашел следующице:
Регистрация сервера <73e709ea-5d93-4b2e-bbb0-99b7938da9e4>DCOM не выполнена за отведенное время ожидания.
нашел что это такое:
C:WINNTsystem32>reg query HKEY_LOCAL_MACHINESOFTWAREClassesAppID <73e709ea-5d93-4b2e-bbb0-99b7938da9e4>/ve
HKEY_LOCAL_MACHINESOFTWAREClassesAppID<73e709ea-5d93-4b2e-bbb0-99b7938da9e4>
(Default) REG_SZ Microsoft WMI Provider Subsystem Host
Дал полные права на выполнение в свойствах — не помогло
Сделал перерегистрацию (были проблемы с обновлениями)
net stop wuauserv
regsvr32 /s wuaueng.dll
regsvr32 /s wuaueng1.dll
regsvr32 /s wucltui.dll
regsvr32 /s wups.dll
regsvr32 /s wups2.dll
regsvr32 /s wuweb.dll
regsvr32 /s jscript.dll
regsvr32 /s atl.dll
regsvr32 /s softpub.dll
regsvr32 /s msxml3.dll
net start wuauserv
Помогает только перезагрузка но через 3 часа — день снова ошибка
Подскажите в какую стороноу копать
PS думаю проблемма либо в доступе либо в обновлении
«>