DCOM アプリケーションの起動 ID に関する情報をプログラムで取得する方法はありますか。私が何を意味するかを理解するために添付の写真を見てください。
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;
しかし、「RunAsUser」プロパティは空でした。Interop.COMAdmin も試してみました
COMAdmin.COMAdminCatalogClass catalog = (COMAdmin.COMAdminCatalogClass)new COMAdmin.COMAdminCatalog();
(COMAdmin.COMAdminCatalogCollection)catalog.GetCollection("Applications")
このようにして、MMC の「コンポーネント サービス」スナップインの「COM+ アプリケーション」ノードの下にリストされているアプリケーションを取得することができました。
私は COM、DCOM、COM+ の初心者で、何か重要なことを見逃していると確信しています。
しばらくすると、最初のアプローチ (ManagementObject) で NULL を取得していた理由がわかりました。受け取るもの:
- ID が現在起動ユーザーに設定されている場合は NULL
- 「対話ユーザー」の場合は「対話ユーザー」
- 3 番目のオプションの場合のユーザー名を含む文字列 (最初の図を参照)
しかし、それでも、MMCのDCOM 構成ノードの下にあるMicrosoft PowerPoint スライドなどのアイテムの ID を変更する方法が必要です。