Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取有关当前扩展GPO的信息_C#_.net_Group Policy_Mmc_Snap In - Fatal编程技术网

C# 获取有关当前扩展GPO的信息

C# 获取有关当前扩展GPO的信息,c#,.net,group-policy,mmc,snap-in,C#,.net,Group Policy,Mmc,Snap In,我们目前正在开发一个MMC管理单元扩展,它扩展了多个组策略对象(GPO),如下图所示: 该技术是MMC3.0、.NET3.5、C#、VS2013。该扩展在所有GPO上都可用 扩展的主类如下所示(以一种规范化的方式) 一切正常,但我无法确定哪个GPO是当前打开的扩展的父级。我想知道这一点,因为我必须在注册表中写入以下路径:HKLM\Software\Company\Product\Client Group Policy\[GPOID]\ 我希望动态使用此ID: 我尝试了很多事情,但都没有结果:

我们目前正在开发一个MMC管理单元扩展,它扩展了多个组策略对象(GPO),如下图所示:

该技术是MMC3.0、.NET3.5、C#、VS2013。该扩展在所有GPO上都可用

扩展的主类如下所示(以一种规范化的方式)

一切正常,但我无法确定哪个GPO是当前打开的扩展的父级。我想知道这一点,因为我必须在注册表中写入以下路径:HKLM\Software\Company\Product\Client Group Policy\[GPOID]\

我希望动态使用此ID:

我尝试了很多事情,但都没有结果:

  • 在ExtensionSnapIn类中,有一个继承的PrimaryScopeNode属性,它有一个作为GUID的NodeType属性。不幸的是,此属性始终返回00000000-000-0000-0000-000000000000。但是,文档中说,关于PublishSnodeTypeAttribute:
如果节点没有此属性,则无法将其注册为 可扩展节点

  • 每当我尝试读取PrimaryNode.SharedData时,如下所示:
样本:

//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_节点类型、CCF_SZNODETYPE、CCF_SNAPIN_CLASSID、CCF_DISPLAY_NAME,我得到以下信息:

以下剪贴板格式保留供MMC使用: CCF\u显示\u名称。指定其他剪贴板格式

其余的剪贴板格式只提供一个PrimarySnapInDataException,其中包含以下堆栈跟踪:

位于Microsoft.ManagementConsole.SharedDaitaItem.GetData()的 中的Balabit.SyslogNgAgent.MMC.ExtensionSnapIn.OnInitialize() c:\Source\Bergholz\Client\Client.Product\Main\src\MMC\ExtensionSnapIn.cs:line 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 数据对象,IntPtr hScopeItem)位于 Microsoft.ManagementConsole.Executive.ComponentData.OneExpand(IDataObject 数据对象,布尔isExpanding,IntPtr hScopeItem)位于 Microsoft.ManagementConsole.Executive.ExpandMMCNotify.OnNotify(IntPtr 数据对象、IntPtr参数、IntPtr参数)位于 Microsoft.ManagementConsole.Executive.MmcNotifyTarget.Notify(IntPtr 数据对象、NotificationType事件类型、IntPtr参数、IntPtr参数)

我在谷歌上搜索这个问题已经好几天了,我读过很多关于MMC扩展插件和GPO的文章,但是我还没有找到任何解决问题的有效方法

提前谢谢你的帮助

//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);
}