C((zhi)レジストリ指定のキー操作を取得する


特定のプログラムは指定された運転環境に依存しなければなりません。レジストリを読み込み、このコンピュータが実行環境にあるかどうかを判断するのはいい方法です。各ソフトをインストールした後、対応するキー値をレジストリに登録します。そしてキーの値は唯一無二です。
まず、プログラムを実行する前に読み取って判断するために、その具体的な唯一無二のキーを見つける必要があります。
コードは以下の通りです

class Program
 {
  private static string _sValue = string.Empty; 
  static void Main(string[] args)
  {
   Console.WriteLine("       :");
   _sValue = Console.ReadLine();
   Console.WriteLine($"    。。。");
 
   var registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
     Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32); //      
   int i = 0;
   GetKeyNames(registryKey, ref i);
   Console.WriteLine($"    。。。");
   Console.ReadKey();
  }
 
  /// <summary>
  ///       
  /// </summary>
  /// <param name="subkey">  </param>
  /// <param name="i"></param>
  private static void GetKeyNames(RegistryKey subkey, ref int i)
  {
   foreach (var subkey_name in subkey.GetSubKeyNames()) //                 
   {
    try
    {
     using (RegistryKey csubkey = subkey.OpenSubKey(subkey_name))
     {
      GetValueName(csubkey, ref i);
      GetKeyNames(csubkey, ref i);
     }
    }
    catch { }
   }
  }
 
  /// <summary>
  ///            
  /// </summary>
  /// <param name="subkey">  </param>
  /// <param name="i"></param>
  private static void GetValueName(RegistryKey subkey, ref int i)
  {
   foreach (var name in subkey.GetValueNames()) //                     
   {
    var sValue = subkey.GetValue(name) + string.Empty;
    if (string.Compare(sValue, string.Format(@"{0}", _sValue, StringComparison.OrdinalIgnoreCase)) == 0)
    {
     Console.WriteLine(++i + "\t" + subkey.Name);
    }
   }
  }
 }
現在はE:\ArcGIS\Python 27\ArcGISx 6410.2\python.exeを含むキーを探しています。

結果は以下の通りです

知識を補充する:C〓を利用してレジストリに訪問してソフトウェアのインストールのルートを獲得します。
ほとんどのソフトウェアは、基本的に自分の名前とインストール経路情報をレジストリに記録します。
レジストリにこれらの情報を記録する位置は、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\App Paths
したがって、私たちはレジストリのこの位置にアクセスできれば、いくつかのソフトウェアの名前とインストール経路情報を得ることができます。
本ブログでは、C〓〓を使用してレジストリにアクセスし、ソフトウェアのインストール経路を取得して表示します。
1プログラムのメイン画面の説明例
プログラムの一例を下図に示します。

画面のテキストボックスに実行可能プログラムの名前を入力し、「パスの取得」ボタンをクリックすると、画面の次の行(「パスの取得」ボタンの行の次の行)にプログラムの完全なインストール経路情報が表示されます。
ここに入力された実行可能ファイル名は、Adobe Readerのレジストリ内の名前が「AcroRd 32.exe」であるように、レジストリにプログラムの名前でなければなりません。
2プログラムの完全コード例

using System;
using System.Windows.Forms;
using Microsoft.Win32;
 
namespace GetSoftWarePathExp
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }
 
    private void button1_Click(object sender, EventArgs e)
    {
      try
      {
        string softName = textBox1.Text.ToString();
        string strKeyName = string.Empty;
        string softPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\";
        RegistryKey regKey = Registry.LocalMachine;
        RegistryKey regSubKey = regKey.OpenSubKey(softPath + softName + ".exe", false);
 
        object objResult = regSubKey.GetValue(strKeyName);
        RegistryValueKind regValueKind = regSubKey.GetValueKind(strKeyName);
        if (regValueKind == Microsoft.Win32.RegistryValueKind.String)
        {
          this.label3.Text = objResult.ToString();
        }
      }
      catch
      {
        this.label3.Text = "  ,        !";
      }
    }
  }
}
注意:引用が必要です。using Microsoft.Win 32;
3コードの説明
(1)コード「Registry Key regKey=Registry.LocarMachine」は、レジストリのメインキーHKEY_にregKeyを向ける。LOCAL_MACHINE。
(2)コード「Registry Key regSubKey=regKey.OpenSubKey(softPath+softName+「.exe」、false)」は、RegSubKeyを検索する必要があるレジストリに指しています。
(3)コード「objResubKey.GetValue」はレジストリのキー値を取得します。
(4)コード「RegistryValue Kind regValue Kind=regSubKey.GetValue Kind」はレジストリのキータイプを取得します。
(5)取得したキー情報を最後に出力します。
(6)プログラムが間違ったら、「友達、プログラムパスの取得に失敗しました!」のメッセージを表示します。
注意:RegistryKey.GetValueとRegistryKey.GetValuendメソッドはいずれも一つのパラメータが必要です。検索する値の名前を示しています。RegistryKey.GetValueとRegistryKey.GetValueKindメソッドのパラメータが空の文字列の場合、検索するのは名前なしの値です。文字列「(Default)」が表示されます。名前は表示されません。
本例では、入力されたのは空の文字列であり、検索ソフトのAdobe Readerのインストール情報を例にとると、取得されたのは下の図の最初のレジストリ情報であり、このとき、名前項目は文字列「(デフォルト)」を表示する。

4プログラム運転結果
(1)Adobe Readerのインストール経路を取得する
「AcroRd 32」を入力し、「取得経路」をクリックして、以下の結果が得られます。レジストリに記録されている情報と一致しますか?

(2)chromeのインストール経路を取得する
「chrome」を入力して、「取得経路」をクリックして、以下の結果を得ると、レジストリに記録されている情報と一致しますか?

5たくさん話してください
開発においては、特定のプログラムを指定して、ある種の操作を実行する場合があります。レジストリ情報を読み取り、プログラムを開く場合があります。ただ、一部のプログラムにはこのような登録情報が存在しないかもしれません。この時は他の方法を取らなければなりません。
以上のC((zhi)はレジストリの指定キーを取って操作します。小编で皆さんに提供した内容は全部分かります。参考にしてほしいです。どうぞよろしくお愿いします。