我们目前正在开发一个MMC SnapIn扩展,它扩展了多个组策略对象(GPO),就像您可以在下面的图像中看到它一样:
Group Policy Management Editor - Extended
Thecnology是MMC 3.0,.NET 3.5,C#,VS2013。该扩展程序适用于所有GPO。
扩展的主要类看起来像这样(以无限的方式)
[SnapInSettings("{3B6F64DC-4572-4A64-957A-E8A9E2FEBD54}", DisplayName = "DisplayName", Description = "MMC Snap-In")]
[ExtendsNodeType("{8FC0B739-A0E1-11D1-A7D3-0000F87571E3}")]
[ExtendsNodeType("{D37CB93E-0DDC-4204-AA04-C3D70B01A7D8}")]
public class ExtensionSnapIn : NamespaceExtension
{
}
一切正常,但我无法确定哪个GPO是当前打开的扩展的父级。我想知道这一点,因为我必须在注册表中写入以下路径:HKLM \ Software \ Company \ Product \ Client Group Policy \ [GPOID] \
我想动态获取此ID:I'm looking look for the highlighted GUID
我尝试过很多没有任何结果的事情:
如果某个节点没有此属性,则无法将其注册为 可扩展节点。
样品:
//private const string shdata = "CCF_SCE_GPT_UNKNOWN";
//private const string shdata = "CCF_SNAPIN_CLASSID";
//private const string shdata = "CCF_DISPLAY_NAME";
//private const string shdata = "CCF_NODETYPE";
//private const string shdata = "CCF_SZNODETYPE";
//private const string shdata = "CCF_SNAPIN_CLASSID";
//private const string shdata = "CCF_DISPLAY_NAME";
//private const string shdata = "CFSTR_DSOBJECTNAMES";
private const string shdata = "CCF_SCE_GPT_UNKNOWN";
public ExtensionSnapIn()
{
this.PrimaryNode.SharedData.Add(new SharedDataItem(shdata));
}
protected override void OnInitialize()
{
SharedDataItem sharedDataItem = this.PrimaryNode.SharedData.GetItem(shdata);
}
我总是遇到异常。对于CCF_NODETYPE,CCF_SZNODETYPE,CCF_SNAPIN_CLASSID,CCF_DISPLAY_NAME我收到了这个:
以下剪贴板格式保留供MMC使用: CCF_DISPLAY_NAME。指定另一种剪贴板格式。
其余的剪贴板格式只提供带有此堆栈跟踪的PrimarySnapInDataException:
at Microsoft.ManagementConsole.SharedDataItem.GetData()at Balabit.SyslogNgAgent.MMC.ExtensionSnapIn.OnInitialize()in C:\源\伯格霍尔兹\客户\ Client.Product \主\ SRC \ MMC \ ExtensionSnapIn.cs:线 65点 Microsoft.ManagementConsole.Advanced.NamespaceExtension.ProcessNotification(通知 通知)在 Microsoft.ManagementConsole.Internal.SnapInClient.Microsoft.ManagementConsole.Internal.IMessageClient.ProcessNotification(通知 通知)在 Microsoft.ManagementConsole.Executive.SnapInInitializationOperation.OnStart() 在 Microsoft.ManagementConsole.Executive.RunningOperationsTable.EnqueueOperation(操作 操作) Microsoft.ManagementConsole.Executive.NamespaceExtensionComponentData.GetScopeNodeForExpand(IDataObject的 dataObject,IntPtr hScopeItem)at Microsoft.ManagementConsole.Executive.ComponentData.OnExpand(IDataObject的 dataObject,Boolean isExpanding,IntPtr hScopeItem)at Microsoft.ManagementConsole.Executive.ExpandMmcNotification.OnNotify(IntPtr的 dataObject,IntPtr arg,IntPtr param)at Microsoft.ManagementConsole.Executive.MmcNotifyTarget.Notify(IntPtr的 dataObject,NotificationType eventType,IntPtr arg,IntPtr param)
我已经搜索了这个问题好几天了,我已经阅读了大量有关MMC Extension SnapIns和GPO的文章,但我还没有找到任何可用的解决方案来解决我的问题。
提前感谢您的帮助。