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

本文关键字:COMAdminCatalog 使用 WMI 数据 访问 COMAdmin | 更新日期: 2023-09-27 18:01:16

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

COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.GetCollection("Applications")

现在我需要从其他域执行相同的操作。因此,当我尝试运行上面的代码时,我收到身份验证错误。我试图通过WMI连接并从win32 WMI提供程序中抓取COM+应用程序列表,但似乎要么不可能,要么我做错了。

如果有人能帮我从COMAdminCatalog中获得使用凭据的应用程序列表,我会很高兴。

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

您必须在当前线程中模拟一个不同的用户。

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();
}

查看详细信息:

  • ImpersonatedUser类:https://blogs.msdn.microsoft.com/joncole/2009/09/21/impersonation-code-in-c/
  • How to impersonate: https://blogs.msdn.microsoft.com/shawnfa/2005/03/21/how-to-impersonate/