어떻게 C\#에서 등록 표를 사용 합 니까

8691 단어 c#레 지 스 트
뭐 공부 해요?
        레 지 스 트 는 Microsoft Windows 운영 체제 와 응용 프로그램의 중요 한 차원 형 데이터 베이스 로 시스템 과 응용 프로그램의 설정 정 보 를 저장 하 는 데 사용 된다.키(key,또는"항목"),하위 키(subkey,하위 항목)와 값 항목(value)으로 구성 되 어 있 습 니 다.하나의 키 는 트 리 데이터 구조의 한 노드 이 고 서브 키 는 이 노드 의 서브 노드 이 며 서브 키 도 키 이다.하나의 값 항목 은 키 의 속성 으로 이름(name),데이터 형식(datatype),데이터(data)로 구성 되 어 있 습 니 다.하나의 키 는 하나 이상 의 값 을 가 질 수 있 습 니 다.값 의 이름 이 각각 다 릅 니 다.값 의 이름 이 비어 있 으 면 이 값 은 이 키 의 기본 값 입 니 다.
     (1)등록 표 의 데이터 유형 은 주로 다음 과 같은 다섯 가지 가 있다.

   (2)등록 표 는 다음 과 같은 5 개의 1 급 분기 가 있다.

(3)등록 표 의 저장 방식:
           윈도 NT 시리즈 운영 체제 와 윈도 9x 시리즈 의 저장 방식 은 큰 차이 가 있다.레 지 스 트 리 하 이브 스 라 고 불 리 는 레 지 스 트 리 는 여러 파일 로 나 뉘 어 저 장 됩 니 다.모든 파일 을 하나의 설정 단위 라 고 합 니 다.초기 윈도 3.x 시리즈 에서 레 지 스 트 는 하나의 reg.dat 파일 만 포함 하고 저 장 된 내용 은 나중에 HKEY 로 변 했다.CLASSES_ROOT 분기.
윈도 NT 가족의 설정 단위 파일:

Windows 9x 가족의 설정 단위 파일:

 2.C\#레 지 스 트 리 지 조작
        우 리 는 외부 로 windows 운영 체 제 를 불 러 올 수 있다. Advapi 32.dll 파일,레 지 스 트 리 지 작업 을 수행 합 니 다.다음 인 스 턴 스 에서 저 희 는.NET 플랫폼 을 사용 하여 자체 적 으로 가지 고 있 습 니 다. Microsoft.Win 32.Registry 라 이브 러 리 를 사용 할 때 다음 과 같은 인용 을 추가 합 니 다.

using Microsoft.Win32;
구체 적 인 조작 은 다음 과 같다.

public static class RegistryUtil
  {
    #region      
    /// <summary>
    ///       
    /// </summary>
    /// <param name="keyPath"></param>
    /// <param name="parentKey"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryKey(string keyPath, RegistryKey parentKey)
    {
      return parentKey?.CreateSubKey(keyPath);
    }


    /// <summary>
    ///   <see cref="Registry.LocalMachine">     
    /// </summary>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryLocalMachine64Key(string keyPath)
    {
      return Registry.LocalMachine.CreateSubKey(keyPath);
    }

    /// <summary>
    ///   <see cref="Registry.ClassesRoot">     
    /// </summary>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryClassesRootKey(string keyPath)
    {
      return Registry.ClassesRoot.CreateSubKey(keyPath);
    }

    /// <summary>
    ///   <see cref="Registry.CurrentConfig">     
    /// </summary>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryCurrentConfigKey(string keyPath)
    {
      return Registry.CurrentConfig.CreateSubKey(keyPath);
    }

    /// <summary>
    ///   <see cref="Registry.CurrentUser">     
    /// </summary>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryCurrentUserKey(string keyPath)
    {
      return Registry.CurrentUser.CreateSubKey(keyPath);
    }

    /// <summary>
    ///   <see cref="Registry.PerformanceData">     
    /// </summary>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryPerformanceDataKey(string keyPath)
    {
      return Registry.PerformanceData.CreateSubKey(keyPath);
    }

    /// <summary>
    ///   <see cref="Registry.Users">     
    /// </summary>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey CreateRegistryUsersKey(string keyPath)
    {
      return Registry.Users.CreateSubKey(keyPath);
    }
    #endregion


    #region      
    /// <summary>
    ///    <see cref="RegistryView.Registry64"/>   <see cref="RegistryHive.LocalMachine"/>
    /// </summary>
    /// <returns></returns>
    public static RegistryKey OpenLocalMachine64Key()
    {
      return RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
    }

    /// <summary>
    ///    <see cref="RegistryView.Registry32"/>   <see cref="RegistryHive.LocalMachine"/>
    /// </summary>
    /// <returns></returns>
    public static RegistryKey OpenLocalMachine32Key()
    {
      return RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
    }

    /// <summary>
    ///    <see cref="RegistryView.Registry64"/>   <see cref="RegistryHive.CurrentUser"/>
    /// </summary>
    /// <returns></returns>
    public static RegistryKey OpenCurrentUser64Key()
    {
      return RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry64);
    }

    /// <summary>
    ///    <see cref="RegistryView.Registry32"/>   <see cref="RegistryHive.LocalMachine"/>
    /// </summary>
    /// <returns></returns>
    public static RegistryKey OpenCurrentUser32Key()
    {
      return RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry32);
    }

    /// <summary>
    ///       
    /// </summary>
    /// <param name="rootKey"></param>
    /// <param name="keyPath"></param>
    /// <returns></returns>
    public static RegistryKey OpenKey(this RegistryKey rootKey, string keyPath)
    {
      return rootKey.OpenSubKey(keyPath, true);
    }
    #endregion


    /// <summary>
    ///       
    /// </summary>
    /// <param name="key"></param>
    /// <param name="name"></param>
    /// <returns></returns>
    public static string ReadRegistryValue(this RegistryKey key, string name)
    {
      return key?.GetValue(name)?.ToString();
    }

    /// <summary>
    ///       
    /// </summary>
    /// <param name="key"></param>
    /// <param name="name"></param>
    /// <param name="value"></param>
    public static void WriteRegistryValue(this RegistryKey key, string name, string value)
    {
      key.SetValue(name, value);
    }

    /// <summary>
    ///      
    /// </summary>
    /// <param name="key"></param>
    /// <param name="name"></param>
    public static void DeleteRegistryValue(this RegistryKey key, string name)
    {
      key.DeleteValue(name);
    }
  }
디버그 코드 는 다음 과 같 습 니 다:

static void Main(string[] args)
    {
      //      
      string path = @"Software\Test\Char";
      var key = RegistryUtil.CreateRegistryLocalMachine64Key(path);
      key.WriteRegistryValue("Name", "Dwayne");
      key.WriteRegistryValue("Age", "18");

      //      
      var regKey = RegistryUtil.OpenLocalMachine64Key().OpenKey(path);
      var name  = regKey.ReadRegistryValue("Name");
      var age  = regKey.ReadRegistryValue("Age");
      Console.WriteLine($"Name={name},Age={age}");

      Console.WriteLine("Hello World!");
    }
이상 은 C\#에서 레 지 스 트 를 어떻게 사용 하 는 지 에 대한 상세 한 내용 입 니 다.c\#레 지 스 트 를 사용 하 는 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기