最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#獲取注冊表指定鍵值操作

 更新時間:2020年12月09日 08:40:11   作者:秋漓  
這篇文章主要介紹了C#獲取注冊表指定鍵值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

某些程序必須依賴指定運行環(huán)境。那么讀取注冊表來判斷此電腦是否有執(zhí)行環(huán)境是個很不錯的辦法。因為每個軟件安裝之后都會在注冊表中注冊對應的鍵值,并且有些鍵值是獨一無二的。

那么首先就需要找到那個具體的獨一無二的鍵值,以便程序在運行之前能夠去讀取以判斷。

代碼如下:

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); //判斷機器位數(shù)
   int i = 0;
   GetKeyNames(registryKey, ref i);
   Console.WriteLine($"查詢結束。。。");
   Console.ReadKey();
  }
 
  /// <summary>
  /// 遍歷所有子項
  /// </summary>
  /// <param name="subkey">節(jié)點</param>
  /// <param name="i"></param>
  private static void GetKeyNames(RegistryKey subkey, ref int i)
  {
   foreach (var subkey_name in subkey.GetSubKeyNames()) // 檢索包含所有子項名稱的字符串數(shù)組
   {
    try
    {
     using (RegistryKey csubkey = subkey.OpenSubKey(subkey_name))
     {
      GetValueName(csubkey, ref i);
      GetKeyNames(csubkey, ref i);
     }
    }
    catch { }
   }
  }
 
  /// <summary>
  /// 若包含輸入值則輸出記錄
  /// </summary>
  /// <param name="subkey">節(jié)點</param>
  /// <param name="i"></param>
  private static void GetValueName(RegistryKey subkey, ref int i)
  {
   foreach (var name in subkey.GetValueNames()) //檢索包含與此項關聯(lián)的所有值名稱的字符串數(shù)組
   {
    var sValue = subkey.GetValue(name) + string.Empty;
    if (string.Compare(sValue, string.Format(@"{0}", _sValue, StringComparison.OrdinalIgnoreCase)) == 0)
    {
     Console.WriteLine(++i + "\t" + subkey.Name);
    }
   }
  }
 }

現(xiàn)在查找含有E:\ArcGIS\Python27\ArcGISx6410.2\python.exe的鍵:

結果如下:

補充知識:利用C#訪問注冊表獲取軟件的安裝路徑

絕大多數(shù)軟件,基本上都會在注冊表中記錄自己的名字和安裝路徑信息。

在注冊表中記錄這些信息的位置是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

因此,我們只要能訪問到注冊表的這個位置,就可以獲取到某些軟件的名稱和安裝路徑信息。

本博文使用C#訪問注冊表獲取軟件的安裝路徑并進行顯示。

1 示例程序主畫面說明

示例程序主畫面如下圖所示。

在畫面中的文本框中輸入可執(zhí)行程序的名稱,點擊“獲取路徑”按鈕,便會在畫面中的下一行(“獲取路徑”按鈕所在行的下一行)顯示出該程序完整的安裝路徑信息。

這里輸入的可執(zhí)行文件名稱必須是程序在注冊表中的名稱,如Adobe Reader在注冊表中的名稱為“AcroRd32.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.Win32;

3 代碼說明

(1)代碼“RegistryKey regKey = Registry.LocalMachine”使regKey 指向注冊表主鍵HKEY_LOCAL_MACHINE。

(2)代碼“RegistryKey regSubKey = regKey.OpenSubKey(softPath + softName + ".exe", false)”使regSubKey 指向我們需要查找的注冊表子健。

(3)代碼“object objResult = regSubKey.GetValue(strKeyName)”獲取注冊表的鍵值。

(4)代碼“RegistryValueKind regValueKind = regSubKey.GetValueKind(strKeyName)”獲取注冊表的鍵值類型。

(5)最后輸出獲取到的鍵值信息。

(6)程序若出錯,輸出“朋友,獲取程序路徑失??!”的提示信息。

注意:RegistryKey.GetValue和RegistryKey.GetValueKind方法均需要傳入一個參數(shù)指示要檢索的值的名稱,當傳遞給RegistryKey.GetValue和RegistryKey.GetValueKind方法的參數(shù)為一個空字符串時,則檢索的是一個未命名的值,在注冊表編輯器中顯示此未命名的值時,將顯示字符串“(Default)”,而不是顯示一個名稱。

在本例中,傳入的就是一個空字符串,若以檢索軟件Adobe Reader的安裝信息為例,則獲取的是下圖中的第一條注冊表信息,此時名稱項顯示字符串“(默認)”。

4 程序運行結果

(1)獲取Adobe Reader的安裝路徑

輸入“AcroRd32”,點擊“獲取路徑”,得到以下結果,是不是和注冊表中記錄的信息一致啊。

(2)獲取chrome的安裝路徑

輸入“chrome”,點擊“獲取路徑”,得到以下結果,是不是和注冊表中記錄的信息一致啊。

5 多說兩句

在開發(fā)中,有時會指定特定程序來執(zhí)行某類操作,這時可能會涉及讀取注冊表信息來打開程序。只是有些程序可能不存在這樣的注冊信息,這時,我們就必須采取其他方式了。

以上這篇C#獲取注冊表指定鍵值操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C#定義簡單的反射工廠實例分析

    C#定義簡單的反射工廠實例分析

    這篇文章主要介紹了C#定義簡單的反射工廠的用法,實例分析了反射工廠的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C#實現(xiàn)winform漸變效果的方法

    C#實現(xiàn)winform漸變效果的方法

    這篇文章主要介紹了C#實現(xiàn)winform漸變效果的方法,涉及到窗體的設計與屬性的修改等技巧,需要的朋友可以參考下
    2014-10-10
  • C#中異步Socket通信編程代碼實例

    C#中異步Socket通信編程代碼實例

    這篇文章主要介紹了C#中異步Socket通信編程代碼實例,本文講解了什么是Socket編程的異步是實現(xiàn)、如何實現(xiàn)Socket異步通信并給出了代碼實例,需要的朋友可以參考下
    2015-03-03
  • C#實現(xiàn)將一個字符串進行翻轉顯示的6種方法

    C#實現(xiàn)將一個字符串進行翻轉顯示的6種方法

    下面小編就為大家分享一篇C#實現(xiàn)將一個字符串進行翻轉顯示的6種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • C#在MySQL大量數(shù)據(jù)下的高效讀取、寫入詳解

    C#在MySQL大量數(shù)據(jù)下的高效讀取、寫入詳解

    最近由于工作的原因,經(jīng)常需要對海量數(shù)據(jù)進行處理,做的數(shù)據(jù)爬蟲相關,動輒千萬級別的數(shù)據(jù),單表幾十個G 都是都是家常便飯。 那么主要的開發(fā)語言是C#,數(shù)據(jù)庫使用的是MySQL。下面通過這篇文章我們來一起學習學習吧。
    2016-11-11
  • C# 給PPT中的圖表添加趨勢線的方法

    C# 給PPT中的圖表添加趨勢線的方法

    本文內(nèi)容分享通過C#程序代碼給PPT文檔中的圖表添加數(shù)據(jù)趨勢線的方法,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • C#實現(xiàn)協(xié)同過濾算法的實例代碼

    C#實現(xiàn)協(xié)同過濾算法的實例代碼

    這篇文章介紹了C#實現(xiàn)協(xié)同過濾算法的實例代碼,有需要的朋友可以參考一下
    2013-07-07
  • c#之關閉窗體的實現(xiàn)方法

    c#之關閉窗體的實現(xiàn)方法

    這篇文章主要介紹了c#之關閉窗體的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C#安裝OpenCvSharp4的實現(xiàn)步驟

    C#安裝OpenCvSharp4的實現(xiàn)步驟

    OpenCv是一款開源的圖像處理庫,本文就介紹了C#安裝OpenCvSharp4的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2022-05-05
  • asp.net core mvc權限控制:在視圖中控制操作權限

    asp.net core mvc權限控制:在視圖中控制操作權限

    本文主要介紹了asp.net core mvc權限控制:在視圖中控制操作權限。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

南华县| 伊吾县| 晋宁县| 石台县| 黔江区| 花莲县| 徐汇区| 昌江| 孙吴县| 南丹县| 比如县| 伊宁县| 曲松县| 会理县| 三台县| 丘北县| 文化| 石台县| 永寿县| 宾阳县| 寿光市| 和顺县| 沙坪坝区| 瑞丽市| 余干县| 房产| 云梦县| 清河县| 濮阳市| 彰化市| 南岸区| 青铜峡市| 莱芜市| 特克斯县| 南郑县| 牙克石市| 石首市| 延安市| 房产| 济源市| 马龙县|