我正在尝试在C#中创建COM对象Microsoft.Update.AutoUpdate
的实例。这在PowerShell中有效:
$AutoUpdates = New-Object -ComObject "Microsoft.Update.AutoUpdate"
但是,这在C#中不起作用:
var autoUpdateClass = Type.GetTypeFromProgID("Microsoft.Update.AutoUpdate");
// var autoup = Activator.CreateInstance(autoUpdateClass) as IAutomaticUpdates;
在这种情况下,autoUpdateClass
为空。有什么方法可以激活此类的实例吗?也许我必须手动指定DLL,或确保进程的正确位数?
一种可行的选择是添加对WUApiLib.dll
的引用,并将“嵌入互操作类型”设置为false。然后我可以做new AutoUpdateClass()
。缺点是我会有一个额外的Interop.WUApiLib.dll
,并且人们也推荐给"never do this"。无论如何,我想知道为什么GetTypeFromProgID
在这里失败。
可能会发生异常。检查以下代码:
try
{
var autoUpdateClass = Type.GetTypeFromProgID("Microsoft.Update.AutoUpdate", true);
}
catch(Exception e)
{
//check if any exception occured
}