之前我使用下面的代码来获取COM +应用程序并验证我的应用程序是否正在运行
COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.GetCollection("Applications")
现在我需要从其他域执行相同的操作。因此,当我尝试运行上面的代码时,我收到身份验证错误。 我试图通过WMI连接并从win32 wmi提供程序获取COM +应用程序列表,但似乎它不可能或我做错了。
如果有人可以帮我从COMAdminCatalog使用凭据获取应用程序列表,我会很高兴。
答案 0 :(得分:0)
您必须在当前线程上模拟其他用户。
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/