Type.GetTypeFromProgID()返回null,但是New-Object在Powershell中有效

问题描述 投票:0回答:1

我正在尝试在C#中创建COM对象Microsoft.Update.AutoUpdate的实例。这在PowerShell中有效:

$AutoUpdates = New-Object -ComObject "Microsoft.Update.AutoUpdate"

但是,这在C#中不起作用:

var autoUpdateClass = Type.GetTypeFromProgID("Microsoft.Update.Auto­Update");
// var autoup = Activator.CreateInstance(autoUpdateClass) as IAutomaticUpdates;

在这种情况下,autoUpdateClass为空。有什么方法可以激活此类的实例吗?也许我必须手动指定DLL,或确保进程的正确位数?

一种可行的选择是添加对WUApiLib.dll的引用,并将“嵌入互操作类型”设置为false。然后我可以做new AutoUpdateClass()。缺点是我会有一个额外的Interop.WUApiLib.dll,并且人们也推荐给"never do this"。无论如何,我想知道为什么GetTypeFromProgID在这里失败。

c# com windows-update
1个回答
0
投票

可能会发生异常。检查以下代码:

try
{
    var autoUpdateClass = Type.GetTypeFromProgID("Microsoft.Update.Auto­Update", true);
}
catch(Exception e)
{
   //check if any exception occured
}
© www.soinside.com 2019 - 2024. All rights reserved.