Я пытаюсь создать экземпляр COM-объекта Microsoft.Update.AutoUpdate
в C#. Это работает в PowerShell:
$AutoUpdates = New-Object -ComObject "Microsoft.Update.AutoUpdate"
Однако это не работает в C#:
var autoUpdateClass = Type.GetTypeFromProgID("Microsoft.Update.AutoUpdate");
// var autoup = Activator.CreateInstance(autoUpdateClass) as IAutomaticUpdates;
В этом случае autoUpdateClass
имеет значение null. Есть ли способ активировать экземпляр этого класса? Может быть, мне нужно вручную указать DLL или обеспечить правильную разрядность моего процесса?
Рабочей альтернативой было бы добавить ссылку на WUApiLib.dll
и установить для параметра «Embed Interop Types» значение false. Тогда я могу просто сделать new AutoUpdateClass()
. Недостатком является то, что у меня тогда есть дополнительный Interop.WUApiLib.dll
, а также люди рекомендуют "никогда не делать этого" . В любом случае, я хотел бы знать, почему GetTypeFromProgID
здесь не работает.