【MMC】Microsoft 管理コンソール ~プログラム作成 / プロパティ[1] ~

 * 環境設定やDLLの追加などは以下を参照。ここでは、プログラムの実装だけを記入する
http://blogs.yahoo.co.jp/dk521123/31319482.html
http://blogs.yahoo.co.jp/dk521123/31598064.html
http://blogs.yahoo.co.jp/dk521123/31586051.html

作成するファイル

■クラスファイル
 * PropertySheetSnapIn.cs
http://blogs.yahoo.co.jp/dk521123/31629756.html
 * UserListView.cs
http://blogs.yahoo.co.jp/dk521123/31635795.html
 * ScopePropertyPage.cs
http://blogs.yahoo.co.jp/dk521123/31647650.html
 * ScopePropertiesControl.cs(UserControl/TextBox1)
  => スコープのプロパティを選択した場合の画面
http://blogs.yahoo.co.jp/dk521123/31636230.html
 * UserPropertyPage.cs
http://blogs.yahoo.co.jp/dk521123/31647879.html
 * UserPropertyControl.cs(UserControl/TextBox1, TextBox2)
  => 詳細画面を右クリックし、プロパティを選択した場合の画面
http://blogs.yahoo.co.jp/dk521123/31658219.html

サンプル

PropertySheetSnapIn.cs

using System.ComponentModel;
using Microsoft.ManagementConsole;

/// <summary>
/// Allows the .Net framework to install the assembly.
/// </summary>
[RunInstaller(true)]
public class InstallUtilSupport : SnapInInstaller
{
}

/// <summary>
/// Provides the main entry point for the creation of a snap-in. 
/// </summary>
[SnapInSettings("{1D82C77F-AD17-4f6e-B61F-53BC121605A3}", // GUIDの作成で取得したIDを記入
   DisplayName = "Property Sheet Sample", // ここが、MMCに追加する時のスナップイン名になる
   Vendor = "Sample Company", // ここが、MMCに追加する時のベンダー名になる
   Description = "User List with Property Sheet SnapIn")]
public class PropertySheetSnapIn : SnapIn
{
 /// <summary>
 /// Constructor
 /// </summary>
 public PropertySheetSnapIn() 
 {
   // Create the snap-in node.
   ScopeNode scopeNode = new SampleScopeNode();
   scopeNode.DisplayName = "Property Sheet Sample";
   this.RootNode = scopeNode;
   this.RootNode.EnabledStandardVerbs = StandardVerbs.Properties;
   
   // Create result list view for the snap-in.
   MmcListViewDescription mmcListViewDescription = new MmcListViewDescription();
   mmcListViewDescription.DisplayName = "User List with Properties";
   mmcListViewDescription.ViewType = typeof(UserListView);
   mmcListViewDescription.Options = MmcListViewOptions.SingleSelect;
   scopeNode.ViewDescriptions.Add(mmcListViewDescription);
   scopeNode.ViewDescriptions.DefaultIndex = 0;
 }
}

/// <summary>
/// 
/// </summary>
public class SampleScopeNode : ScopeNode
{
 /// <summary>
 /// Constructor
 /// </summary>
 public SampleScopeNode()
 { 
 }

 /// <summary>
 /// OnAddPropertyPages is used to get the property pages to show. 
 /// (triggered by Properties verbs)
 /// </summary>
 protected override void OnAddPropertyPages(PropertyPageCollection propertyPageCollection)
 {
   propertyPageCollection.Add(new ScopePropertyPage(this));
 }
}

書ききれいないので、以下に続く
http://blogs.yahoo.co.jp/dk521123/31635795.html