如何以编程方式更改DCOM配置标识

Ole*_*sii 6 c# wmi dcom com+ mmc

有没有办法以编程方式获取有关启动DCOM应用程序身份的信息.看附图了解我的意思.

屏幕截图,包含DCOM Config的应用程序属性

我试图使用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 +应用程序

我是COM,DCOM,COM +的新手,确信我错过了一些重要的东西.

过了一会儿,我发现为什么我曾经在第一种方法(ManagementObject)中得到NULL.您将收到:

  • 如果标识当前设置为启动用户,则为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)