早些时候,我使用下面的代码获取COM+应用程序,并验证我的应用程序是否正在运行
COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.GetCollection("Applications")现在,我需要执行相同的操作,但从其他领域。因此,当我试图运行上面的代码时,我会收到身份验证错误。我试图通过WMI连接,并从win32 wmi提供者那里获取win32应用程序的列表,但这似乎不是不可能的,就是我做错了。
如果有人能帮助我使用凭据从COMAdminCatalog获得应用程序列表,我会很高兴的。
发布于 2016-06-30 21:33:14
您必须在当前线程上模拟另一个用户。
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/https://stackoverflow.com/questions/23431940
复制相似问题