C# 远程计算机上的模拟和Activator.CreateInstance()

C# 远程计算机上的模拟和Activator.CreateInstance(),c#,com,impersonation,C#,Com,Impersonation,在整个C#应用程序中,我都在使用它来简化Win32 LogonUser函数的使用。到目前为止,这在所有情况下都可以正常工作,除了这个特殊的情况,我需要在远程机器上使用不同的凭据创建一个COM对象实例 是否有任何方法可以将对Activator.CreateInstance()的调用包装到具有备用凭据的远程计算机?无论我通过LogonType的哪个值,我都会被拒绝访问(0x80070005) 你找到解决办法了吗?不,我认为不可能你找到解决办法了吗?不,我认为不可能 using (Impersonat

在整个C#应用程序中,我都在使用它来简化Win32 LogonUser函数的使用。到目前为止,这在所有情况下都可以正常工作,除了这个特殊的情况,我需要在远程机器上使用不同的凭据创建一个COM对象实例

是否有任何方法可以将对
Activator.CreateInstance()
的调用包装到具有备用凭据的远程计算机?无论我通过
LogonType
的哪个值,我都会被拒绝访问(0x80070005)


你找到解决办法了吗?不,我认为不可能你找到解决办法了吗?不,我认为不可能
using (Impersonation.LogonUser(domain, username, password, LogonType.Interactive))
{
    try
    {
        Type t = Type.GetTypeFromProgID("Microsoft.Update.Session", hostname, true);
        var comobj = Activator.CreateInstance(t); // <== throws UnauthorizedAccessException
        UpdateSession session = (UpdateSession) comobj;
        IUpdateSearcher updateSearcher = session.CreateUpdateSearcher();

        var count = updateSearcher.GetTotalHistoryCount();

                ...
PS C:\WINDOWS\system32> $updatesession = [activator]::CreateInstance([type]::GetTypeFromProgID("Microsoft.Update.Session", $hostname))