C#使用WMI从COMAdmin.COMAdminCatalog访问数据

C#使用WMI从COMAdmin.COMAdminCatalog访问数据,c#,wmi,com+,comadmin,C#,Wmi,Com+,Comadmin,早些时候,我使用下面的代码获取COM+应用程序,并验证我的应用程序是否正在运行 COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass(); catalog.Connect(servername); catalog.GetCollection("Applications") 现在我需要从其他域执行相同的操作。所以当我尝试运行上面的代码时,我收到了身份验证错误。 我曾尝试通过WMI进行连接,并从win32 WMI提

早些时候,我使用下面的代码获取COM+应用程序,并验证我的应用程序是否正在运行

COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.GetCollection("Applications")
现在我需要从其他域执行相同的操作。所以当我尝试运行上面的代码时,我收到了身份验证错误。 我曾尝试通过WMI进行连接,并从win32 WMI提供程序中获取COM+应用程序列表,但这似乎是不可能的,或者我做错了smth


如果有人能帮助我使用凭据从COMAdminCatalog获取应用程序列表,我将非常高兴

您必须在当前线程上模拟不同的用户

using (ImpersonatedUser user = new ImpersonatedUser("USER_NAME", "DOMAIN_NAME", "USER PASSWORD"))
{

    COMAdmin.COMAdminCatalog objCatalog = new COMAdmin.COMAdminCatalog();
    objCatalog.Connect("SERVER_NAME");

    COMAdmin.COMAdminCatalogCollection objAppCollection =
        (COMAdmin.COMAdminCatalogCollection) objCatalog.GetCollection("Applications");

    objAppCollection.Populate();

}
有关详细信息:

  • 模拟用户
    类:
  • 如何模拟

我没有答案,但请验证在连接时使用服务器的实际IP地址是否也会失败(而不是服务器名)。是的,它还会导致身份验证错误,因为它尝试与我登录的用户进行身份验证,并且在目标域中没有管理员权限。例如:我正在从ADomain中的:ADomain\John.Smith-admin运行目标PC:BDomain\J_Smith-admin在BDomain,这就是我试图找到远程身份验证方法的原因。