Ole*_*sii 6 c# wmi dcom com+ mmc
有没有办法以编程方式获取有关启动DCOM应用程序身份的信息.看附图了解我的意思.

我试图使用WMI
ManagementObjectSearcher s = new ManagementObjectSearcher(new ManagementScope(@"\\.\root\cimv2"), new ObjectQuery(
"select * from Win32_DCOMApplicationSetting where AppID='{048EB43E-2059-422F-95E0-557DA96038AF}'"))
ManagementObjectCollection dcomSett = s.Get();
var value = dcomSett.Cast<ManagementObject>().ToArray()
[0].Properties["RunAsUser"].Value;
Run Code Online (Sandbox Code Playgroud)
但"RunAsUser"属性为空.也试过Interop.COMAdmin
COMAdmin.COMAdminCatalogClass catalog = (COMAdmin.COMAdminCatalogClass)new COMAdmin.COMAdminCatalog();
(COMAdmin.COMAdminCatalogCollection)catalog.GetCollection("Applications")
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我设法获得MMC的"组件服务"管理单元中"COM +应用程序"节点下列出的应用程序:

我是COM,DCOM,COM +的新手,确信我错过了一些重要的东西.
过了一会儿,我发现为什么我曾经在第一种方法(ManagementObject)中得到NULL.您将收到:
但我还是需要一种方法来改变MMC中DCOM Config节点下的Microsoft PowerPoint Slide等项目的身份.
小智 -1
我正在成功使用 COMAdmin DLL。尝试这样的事情:
COMAdminCatalog catalog = new COMAdminCatalog();
COMAdminCatalogCollection applications = catalog.GetCollection("Applications");
applications.Populate();
for (int i = 0; i < applications.Count; i++)
{
COMAdminCatalogObject application = COMAppCollectionInUse.Item[i];
if (application.Name == "Your COM+ application name")
{
application.Value["Identity"] = "nt authority\\localservice"; // for example
}
}
Run Code Online (Sandbox Code Playgroud)