2

現在、下の画像でわかるように、複数のグループ ポリシー オブジェクト (GPO) を拡張する MMC スナップイン拡張機能を開発しています。

グループ ポリシー管理エディター - 拡張

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 を動的に取得したい:強調表示された GUID を探しています

私は多くのことを試しましたが、結果はまったくありませんでした:

  • ExtensionSnapIn クラスには、GUID である NodeType プロパティを持つ継承された PrimaryScopeNode プロパティがあります。残念ながら、このプロパティは常に 00000000-000-0000-0000-000000000000 を返します。ただし、ドキュメントには、PublishesNodeTypeAttribute について次のように記載されています。

この属性を持たないノードは、拡張可能ノードとして登録できません。

  • 次のように 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_NODETYPE、CCF_SZNODETYPE、CCF_SNAPIN_CLASSID、CCF_DISPLAY_NAME の場合、次のようになります。

次のクリップボード形式は、MMC で使用するために予約されています: CCF_DISPLAY_NAME。別のクリップボード形式を指定してください。

残りのクリップボード形式では、次のスタック トレースで PrimarySnapInDataException が発生します。

Microsoft.ManagementConsole.SharedDataItem.GetData() at Balabit.SyslogNgAgent.MMC.ExtensionSnapIn.OnInitialize() in c:\Source\Bergholz\Client\Client.Product\Main\src\MMC\ExtensionSnapIn.cs:line 65 at Microsoft .ManagementConsole.Advanced.NamespaceExtension.ProcessNotification(通知通知) Microsoft.ManagementConsole.Internal.SnapInClient.Microsoft.ManagementConsole.Internal.IMessageClient.ProcessNotification(通知通知) Microsoft.ManagementConsole.Executive.SnapInInitializationOperation.OnStart() at Microsoft.ManagementConsole .Executive.RunningOperationsTable.EnqueueOperation (操作操作) Microsoft.ManagementConsole.Executive.NamespaceExtensionComponentData.GetScopeNodeForExpand (IDataObject dataObject, IntPtr hScopeItem) Microsoft.ManagementConsole.Executive.ComponentData.OnExpand(IDataObject dataObject, Boolean isExpanding, IntPtr hScopeItem) Microsoft.ManagementConsole.Executive.ExpandMmcNotification.OnNotify(IntPtr dataObject, IntPtr arg, IntPtr param) Microsoft.ManagementConsole.Executive.MmcNotifyTarget.Notify(IntPtr dataObject, NotificationType) eventType、IntPtr arg、IntPtr パラメータ)

私はこの問題を何日もグーグルで検索し、MMC 拡張スナップインと GPO に関する記事をたくさん読みましたが、私の問題に対する有効な解決策をまだ見つけていません。

事前にご協力いただきありがとうございます。

4

0 に答える 0