C葃読写レジストリ-韓顕川-ブログ園

9111 ワード

C書を読むこととレジストリを書くこと
投稿元:http://hi.baidu.com/kingboy_wrx/blog/item/1 fd 82097788 f 56 b 96 f 6 httmlRegistry.lassesrootはHKEY_に対応しています。CLASSES_ROOTキーRegistry.Current UserはHKEY_に対応しています。CURRENT_USERキーRegistry.LocarMachineはHKEY_に対応しています。LOCAL_MACHINEキーRegistry.UserはHKEY_に対応しています。USERキーRegistry.Current ConfigはHEKY_に対応しています。CURRENT_CONFIGキーRegistry.DyndaはHKEY_に対応しています。DYN_DATAキーRegistry.PerformancDataはHKEY_に対応しています。PER FOREMANCE_DATAのメインキーRegistryKeyはレジストリに対する基本的な操作をカプセル化しています。読み取り、書き込み、削除を含みます。読み取りの主な関数は、OpenSubKeyメソッドは主に指定されたサブキーを開くことである。Get SubKeyNames()は、キーの下にあるすべてのサブキーの名前を取得する方法であり、その戻り値は文字列配列である。GetValue Names()は、現在のサブキーのすべてのキー名を取得する方法であり、その戻り値も文字列配列である。GetValueメソッドは指定キーのキー値です。書き込みの関数は、CreateSubKeyメソッドは、サブキーSetValue(string name、string value)を追加する方法です。キーの削除関数を設定します。DeleteSubKey()方法:指定されたサブキーを削除します。DeleteSubKeyTree()の方法は、指定されたサブキーディレクトリを完全に削除すること、すなわち、サブキーとサブキー以下のすべてのサブキーを削除することです。1.IEウィンドウの動感効果/-----------------------------/ChangeIE.cs?2004 by yudehui/--------------------using System;using Microsoft.Win 32;/レジストリ操作には必ずこの名前空間namespace Change IE{class Change IE{STAThread]static void Main(string[]args){RegistryKey pregkey;pregkey=Registry.CurrentUser.OpenSubKey(Conttrtrtrtrtrtrtrtrinininingggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg」)「}else{pregkey.SetValue(“MinAnimate”,“1”);pregkey.SetValue(「MaxAnimate」、「1」)、Consone.WriteLine(「修正成功」)、「pregkey.Close;}2.IEツールバーの背景を変更する/-------------------------------------------------------------------------------------------------/Change.cs?2004 by yudehui/--------------------using System;using Microsoft.Win 32;/レジストリ操作には必ずこの名前空間namespace ChangeIEbackColor{class CheneIEbackColor{[STAThread]static void Main(string[]args){RegistryKey pregkey;pregkey=Registry.CurrentUser.Openwatttttttttttttttzzzzzzzf/Opepppffffttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttty==null){Consolie.Writeline(キーが存在しません)}else{pregkey.SetValue(「BackBitmap」、「C:\windows\Greennston.bmp」)、Consolie.Writeline(「修正成功」)、}pregkey.Close}以下は「読み」「書き込み」「削除」「判断」の4つの事例から、priceに対する操作の簡単なstrateの指定を実行します。{string registData;Registry Key hkml=Registry.LocancMachine;RegistryKey software=hkml.OpenSubKey(SOFTWARE);Registry aimdir=software.OpenSubKey(「XXX」、true)以上は読み取ったレジストリの中のHKEYuLOCAL_MACHINE/SOFTWAREディレクトリのXXXディレクトリの中の名前はnameのレジストリの値です。2.レジストリにデータを書いてprvate void WRegedit(string name、string tovalue){RegiststryKehklm=Registrystritystry.LogistristryMastryMastryMastrySuscscscscaphphphphphphinininininMastrySuthththththththththththththththththththththththththththththththththththththththththththththththththththththththththththththC.reat SubKey(「XXX」);aimdir.SetValue(name,tovalue)以上はレジストリにHKEYuLOCALuMACHINE/SOFTWAREディレクトリの下にXXXディレクトリを新規作成し、このディレクトリの下にname値がtovalueというレジストリ項目を作成しました。3.レジストリに指定されたレジストリ項目private void Detegingを削除します。aimnames;RegistryKey hkml=Registry.LocacacMahine;RegistyKey software=hkml.OpenSubKey(「SOFTWARE」、true);RegistryKey aimdir=software.OpenSubKey(「XXX」、trueme====================treeeeeeeeeemedieeeeeeeeeeeeeeemedieeeeeeeeeeemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmdir.DeleteSubKeyTree(name)}以上はレジストリの中でHKEYuLOCALuMACHINE/SOFTWAREディレクトリの下でXXXディレクトリの名前をnameレジストリ項目として削除しました。4.レジストリの項目がプリvate book IsRegeditExit(string name){boll exit=false;string[]subkeyNames;Registrystrystrystrystresssssssssssssssssssssssssssstrtrtrtrtrtrtrscscscscscscscscscscscaaatttttttttttttttttttttmamamamary=============;Registry Key aimdir=software.OpenSubKey(XXX)、true;subkeyNames=aimdir.Get SubKeyNames();foreach(string keyName in subkeyNames){extrue=name}以上はレジストリにHKEYuLOCALuMACHINE/SOFTWAREディレクトリの下で、名前がnameレジストリ項目が存在するかどうかを判断しました。この方法はレジストリを削除する時にすでに存在しています。レジストリ項目を新たに作成する時も相応の判断が必要です。
 
投稿元:http://hi.baidu.com/upupto/blog/item/896d3e7b00fa19f70bd1878a.html
 
レジストリはウインドウシステムのコアデータベースです。このデータベースにシステムに関連する各種パラメータを格納します。これらのパラメータはシステムの起動、ハードウェアのドライバインストール情報、およびウィンドウズシステム上で実行される各種アプリケーションの登録情報などを直接制御します。レジストリが何らかの理由で破壊された場合、軽率者は監視します。ウインドウシステムの起動過程に異常があると、重量者はシステム全体が完全に麻痺してしまう可能性があります。だからレジストリを正しく認識し、適時にレジストリをバックアップすることは、ウインドウユーザーにとって重要です。C(啝)は便利で簡潔に操作レジストリのプログラムを開発することができます。「開始/運転」をクリックし、「開く」の後に「regedit」を記入します。を選択します。レジストリのデータ構造が表示されます。メインキーは階層構造があります。メインキーの次のキーは、このプライマリキーのサブキーと呼ばれます。各キーは複数のサブキーを持つことができます。右のこれらの値はキーと呼ばれます。各キーまたはサブキーは複数のキー値を持つことができます。レジストリは膨大なデータベースです。各キーにはそれぞれ異なる機能が与えられています。Cキーはどのようにレジストリのキーとキーの値を読み取りますか?Microsoft.Win 32という名前空間があります。この名前空間にはレジストリ操作のための二つの種類があります。Registry類、Registry Key類。これらの二つの種類はすべて閉鎖類で、引き継げません。この二つの種類はレジストリに関する方法と属性がたくさん定義されています。これらの二つの種類を呼び出すことにより、Visual C calで簡単に比較できます。操作しました。(1)Registryクラス:このような主に7つの公有の静的領域をカプセル化しています。これらの静的領域はそれぞれこのウィンドウズレジストリの7つの基本的なキーを表しています。具体的には以下の通りです。
Registry.ClassesRoot         HKEY_CLASSES_ROOT  
Registry.CurrentUser         HKEY_CURRENT_USER  
Registry.LocalMachine         HKEY_LOCAL_MACHINE  
Registry.User                 HKEY_USER  
Registry.CurrentConfig       HEKY_CURRENT_CONFIG  
Registry.DynDa               HKEY_DYN_DATA  
Registry.PerformanceData    HKEY_PERFORMANCE_DATA        
(2)RegistryKey類:このような中には主にウィンドウズシステムに対するレジストリの基本的な操作が封入されています。プログラム設計では、まずRegistry類を通じてレジストリの基本的なキーを見つけて、RegistryKey類を通じて、その下のサブキーと具体的な操作を処理するものを探しています。     以下では、レジストリ情報を読み取る例を通して、この2つの使い方を具体的に説明します。プログラム設計と実行の環境:Windows 2000サーバ版、Net Frame Work SDK Beta 2版です。プログラムを実行する前に必要な処理作業があります。プログラム設計の際、主な機能は既に存在しているキーの値を読み取り、ユーザはいくつかのキーと対応するキーの値を新規作成できます。。     プログラムの主な機能は、指定されたキーの下のすべてのサブキーとサブキーの持つキーを読み取り、リスト形式で階層表示します。プログラム設計中の重要なステップと注意すべき問題があります。     メインキーとサブキーの読み取り方法:プログラムでは、指定されたキーの下のサブキーとサブキーのうち、主にRegistryKey類の4つの方法を使用しています。OpenSubKey、GetSubKeyNames、GetValue Names、GetValue。具体的な使い方と意味は以下の通りです。
OpenSubKey ( string name )            。
GetSubKeyNames ( )                 ,             。
GetValueNames ( )                 ,              。
GetValue ( string name )         。      
プログラムの具体的な使用語句は以下の通りです。
RegistryKey hklm = Registry.LocalMachine ;
//  "SYSTEM"  
RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ;
//  "001"  
RegistryKey no1 = software.OpenSubKey ( "001" ) ;
//  "002"  
RegistryKey no2 = no1.OpenSubKey ( "002" ) ;      
ここで、listBox 1はプログラムで定義されたリスト名です。
foreach ( string site in no2.GetSubKeyNames ( ) )
//                 
{
 listBox1.Items.Add ( site ) ;
 //          
 RegistryKey sitekey = no2.OpenSubKey ( site ) ;
 //     
 foreach ( string sValName in sitekey.GetValueNames ( ) )
 //                        
 {
  listBox1.Items.Add ( "" + sValName + ": " + sitekey.GetValue ( sValName ) ) ;
  //               
 }
}    
以上の論述を通じて、プログラムのソースコードを得ることができます。具体的には以下の通りです。
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using Microsoft.Win32 ; 
public class Form1 : Form
{
 private System.ComponentModel.Container components ;
 private ListBox listBox1 ;
 private Button button1 ;
 public Form1 ( )
 {
  InitializeComponent ( ) ;
 }
 //            
 public override void Dispose ( )
 {
  base.Dispose ( ) ;
  components.Dispose ( ) ;
 }
 //            
 private void InitializeComponent ( )
 {
  this.components = new System.ComponentModel.Container ( ) ;
  this.button1 = new Button ( ) ;
  this.listBox1 = new ListBox ( ) ;
  button1.Location = new System.Drawing.Point ( 16 , 320 ) ;
  button1.Size = new System.Drawing.Size ( 75 , 23 ) ;
  button1.TabIndex = 0 ;
  button1.Text = "     " ;
  button1.Click += new System.EventHandler( this.button1_Click ) ;
  listBox1.Location = new System.Drawing.Point ( 16 , 32 ) ;
  listBox1.Size = new System.Drawing.Size ( 496 , 264 ) ;
  listBox1.TabIndex = 1 ;
  this.Text = "       " ;
  this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;
  this.ClientSize = new System.Drawing.Size ( 528 , 357 ) ;
  this.Controls.Add( this.listBox1 ) ;
  this.Controls.Add ( this.button1 ) ;
 }
 //
 protected void button1_Click ( object sender , System.EventArgs e )
 {
  listBox1.Items.Clear ( ) ;
  RegistryKey hklm = Registry.LocalMachine ;
  RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ;
  //  "SYSTEM"  
  RegistryKey no1 = software.OpenSubKey ( "001" ) ;
  //  "001"  
  RegistryKey no2 = no1.OpenSubKey ( "002" ) ;
  //  "002"  
  foreach ( string site in no2.GetSubKeyNames ( ) )
  //                 
  {
   listBox1.Items.Add ( site ) ;
   //          
   RegistryKey sitekey = no2.OpenSubKey ( site ) ;
   //     
   foreach ( string sValName in sitekey.GetValueNames ( ) )
   //                        
   {
    listBox1.Items.Add ( "" + sValName + ": " + sitekey.GetValue ( sValName ) ) ;
    //               
   }
  }
 }
//
 public static void Main ( )
 {
  Application.Run ( new Form1 ( ) ) ;
 }
}     
レジストリに登録された情報は、名前空間Microsoft.Win 32の2つのクラスで実行されます。レジストリ情報の削除、修正、リネームのいくつかの方法もこの2つのクラスで定義されています。これらの方法は、本明細書で紹介した読み取り方法、開閉方法よりも破壊的ですが、より実用的です。レジストリは、システムウィンドウにあります。の重要な役割を果たしていますので、レジストリを操作する前に必ずバックアップを取ってください。操作する時も注意してください。一回の誤操作でシステムが崩壊する可能性があります。
引用元   C葃読写レジストリ-韓顕川-ブログ園