レジストリー【registry】
レジストリ
レジストリとは、Windowsにおいて、システムプログラムやハードウェア、ユーザプログラムなどのシステム情報が格納されているデータベースのことである。
レジストリが広く使われる前までは、アプリケーションソフトのシステム情報は、テキストファイルにそれぞれ格納されていた。このテキストファイルに付く拡張子がiniであることが多かったことから、「INIファイル」と呼ばれていた。
レジストリは、システム情報を統一的に管理するために、また、ユーザーごとに設定された情報の管理を効率的に行うために利用されている。
Windowsでは、レジストリへのアクセスが多いとされている。そのため、レジストリデフラグツールを使用することで無駄な領域をクリーンアップして、レジストリを最適な状態にしておくことが望ましいとされている。
なお、インターネット上でIPアドレスやAS番号などのリソースを割り当て、管理している機構はインターネットレジストリと呼ばれており、略してレジストリと呼ばれる場合もある。
参照リンク
Microsoft Windows レジストリの説明 - (Microsoft)
Registry クラス
アセンブリ: mscorlib (mscorlib.dll 内)
構文
解説
このクラスには、Windows が実行されているコンピュータのレジストリで見つかった標準ルート キーのセットがあります。レジストリは、アプリケーション、ユーザー、既定のシステム設定に関する情報を格納する機能です。たとえば、アプリケーションを終了した後も保持する必要のある情報をレジストリに格納しておくと、そのアプリケーションの再読み込み時に同じ情報にアクセスできます。たとえば、色の設定、画面の位置、ウィンドウのサイズなどを格納できます。このようなデータをユーザー別に制御するには、情報をレジストリ内の異なる位置に格納します。
Registry クラスによって公開される基本 (ルート) RegistryKey インスタンスは、レジストリでのサブキーと値の基本的なストレージ機構を表します。レジストリの内容はキーの存在に依存しているため、すべてのキーは読み取り専用です。Registry により公開公開されるキーは次のとおりです。
CurrentUser LocalMachine ClassesRoot Users PerformanceDataソフトウェア コンポーネントのパフォーマンスに関する情報が格納されます。
CurrentConfig DynDataレジストリから格納または取得する情報のルート キーを確認したら、RegistryKey クラスを使用してサブキーを追加または削除したり、特定のキーの値を操作したりできます。
プラグ アンド プレイ インターフェイスを使用すると、ハードウェア デバイスの情報を自動的にレジストリに登録できます。デバイス ドライバをインストールするソフトウェアは、標準 API へ書き込むことで、レジストリに情報を登録します。
値を取得および設定する静的メソッド.NET Framework Version 2.0 では、Registry クラスにも、レジストリ キーから値を取得および設定する staticGetValue メソッドと SetValue メソッドが含まれています。これらのメソッドは、使用されるたびにレジストリ キーを開いたり閉じたりするため、多数の値にアクセスする場合に、RegistryKey クラスの類似するメソッドと共に実行されることはありません。
また、RegistryKey クラスには、レジストリ キーに Windows のアクセス制御セキュリティを設定できるメソッド、値を取得する前にそのデータ型をテストできるメソッド、キーを削除できるメソッドも用意されています。
このセクションには、2 つのコード例が含まれています。最初の例ではルート キーを示し、2 番目の例では、staticGetValue メソッドと SetValue メソッドを示しています。
HKEY_USERS キーのサブキーを取得し、これらのサブキーの名前を画面に出力する方法を次のコード例に示します。必要な特定のサブキーのインスタンスを作成するには、OpenSubKey メソッドを使用します。次に、RegistryKey で別の演算を使用して、そのキーを操作します。
Imports System Imports Microsoft.Win32 Class Reg Public Shared Sub Main() ' Create a RegistryKey, which will access the HKEY_USERS ' key in the registry of this machine. Dim rk As RegistryKey = Registry.Users ' Print out the keys. PrintKeys(rk) End Sub Shared Sub PrintKeys(rkey As RegistryKey) ' Retrieve all the subkeys for the specified key. Dim names As String() = rkey.GetSubKeyNames() Dim icount As Integer = 0 Console.WriteLine("Subkeys of " & rkey.Name) Console.WriteLine("-----------------------------------------------") ' Print the contents of the array to the console. Dim s As String For Each s In names Console.WriteLine(s) ' The following code puts a limit on the number ' of keys displayed. Comment it out to print the ' complete list. icount += 1 If icount >= 10 Then Exit For End If Next s End Sub End Class
using System; using Microsoft.Win32; class Reg { public static void Main() { // Create a RegistryKey, which will access the HKEY_USERS // key in the registry of this machine. RegistryKey rk = Registry.Users; // Print out the keys. PrintKeys(rk); } static void PrintKeys(RegistryKey rkey) { // Retrieve all the subkeys for the specified key. String [] names = rkey.GetSubKeyNames(); int icount = 0; Console.WriteLine("Subkeys of " + rkey.Name); Console.WriteLine("-----------------------------------------------"); // Print the contents of the array to the console. foreach (String s in names) { Console.WriteLine(s); // The following code puts a limit on the number // of keys displayed. Comment it out to print the // complete list. icount++; if (icount >= 10) break; } } }
using namespace System; using namespace Microsoft::Win32; void PrintKeys( RegistryKey ^ rkey ) { // Retrieve all the subkeys for the specified key. array<String^>^names = rkey->GetSubKeyNames(); int icount = 0; Console::WriteLine( "Subkeys of {0}", rkey->Name ); Console::WriteLine( "-----------------------------------------------" ); // Print the contents of the array to the console. System::Collections::IEnumerator^ enum0 = names->GetEnumerator(); while ( enum0->MoveNext() ) { String^ s = safe_cast<String^>(enum0->Current); Console::WriteLine( s ); // The following code puts a limit on the number // of keys displayed. Comment it out to print the // complete list. icount++; if ( icount >= 10 ) break; } } int main() { // Create a RegistryKey, which will access the HKEY_USERS // key in the registry of this machine. RegistryKey ^ rk = Registry::Users; // Print out the keys. PrintKeys( rk ); }
import System.*; import Microsoft.Win32.*; class Reg { public static void main(String[] args) { // Create a RegistryKey, which will access the HKEY_USERS // key in the registry of this machine. RegistryKey rk = Registry.Users; // Print out the keys. PrintKeys(rk); } //main static void PrintKeys(RegistryKey rKey) { // Retrieve all the subkeys for the specified key. String names[] = rKey.GetSubKeyNames(); int iCount = 0; Console.WriteLine("Subkeys of " + rKey.get_Name()); Console.WriteLine("-----------------------------------------------"); // Print the contents of the array to the console. String s = null; for (int iCtr = 0; iCtr < names.get_Length(); iCtr++) { s = names[iCtr]; Console.WriteLine(s); // The following code puts a limit on the number // of keys displayed. Comment it out to print the // complete list. iCount++; if (iCount >= 10) { break; } } } //PrintKeys } //Reg
サンプル キーを作成し、そのキーに複数のデータ型の値を格納した後、その値を取得して表示するコード例を次に示します。この例では、既定の (無名の) 名前/値ペアを並べ替えて取得する方法、および名前/値ペアが存在しない場合の defaultValue の使用方法を示しています。
Imports System Imports Microsoft.Win32 Public Class Example Public Shared Sub Main() ' The name of the key must include a valid root. Const userRoot As String = "HKEY_CURRENT_USER" Const subkey As String = "RegistrySetValueExample" Const keyName As String = userRoot & "\" & subkey ' Integer values can be stored without specifying the ' registry data type, but Long values will be stored ' as strings unless you specify the type. Note that ' the integer is stored in the default name/value ' pair. Registry.SetValue(keyName, "", 5280) Registry.SetValue(keyName, "TestLong", 12345678901234, _ RegistryValueKind.QWord) ' Strings with expandable environment variables are ' stored as ordinary strings unless you specify the ' data type. Registry.SetValue(keyName, "TestExpand", "My path: %path%") Registry.SetValue(keyName, "TestExpand2", "My path: %path%", _ RegistryValueKind.ExpandString) ' Arrays of strings are stored automatically as ' MultiString. Similarly, arrays of Byte are stored ' automatically as Binary. Dim strings() As String = {"One", "Two", "Three"} Registry.SetValue(keyName, "TestArray", strings) ' Your default value is returned if the name/value pair ' does not exist. Dim noSuch As String = _ Registry.GetValue(keyName, "NoSuchName", _ "Return this default if NoSuchName does not exist.") Console.WriteLine(vbCrLf & "NoSuchName: {0}", noSuch) ' Retrieve the Integer and Long values, specifying ' numeric default values in case the name/value pairs ' do not exist. The Integer value is retrieved from the ' default (nameless) name/value pair for the key. Dim tInteger As Integer = _ Registry.GetValue(keyName, "", -1) Console.WriteLine("(Default): {0}", tInteger) Dim tLong As Long = Registry.GetValue(keyName, _ "TestLong", Long.MinValue) Console.WriteLine("TestLong: {0}", tLong) ' When retrieving a MultiString value, you can specify ' an array for the default return value. The value is ' declared inline, but could also be declared as: ' Dim default() As String = {"Default value."} ' Dim tArray() As String = _ Registry.GetValue(keyName, "TestArray", _ New String() {"Default if TestArray does not exist."}) For i As Integer = 0 To tArray.Length - 1 Console.WriteLine("TestArray({0}): {1}", i, tArray(i)) Next ' A string with embedded environment variables is not ' expanded if it was stored as an ordinary string. Dim tExpand As String = Registry.GetValue(keyName, _ "TestExpand", "Default if TestExpand does not exist.") Console.WriteLine("TestExpand: {0}", tExpand) ' A string stored as ExpandString is expanded. Dim tExpand2 As String = Registry.GetValue(keyName, _ "TestExpand2", "Default if TestExpand2 does not exist.") Console.WriteLine("TestExpand2: {0}...", _ tExpand2.Substring(0, 40)) Console.WriteLine(vbCrLf & _ "Use the registry editor to examine the key.") Console.WriteLine("Press the Enter key to delete the key.") Console.ReadLine() Registry.CurrentUser.DeleteSubKey(subkey) End Sub End Class ' ' This code example produces output similar to the following: ' 'NoSuchName: Return this default if NoSuchName does not exist. '(Default): 5280 'TestLong: 12345678901234 'TestArray(0): One 'TestArray(1): Two 'TestArray(2): Three 'TestExpand: My path: %path% 'TestExpand2: My path: D:\Program Files\Microsoft.NET\... ' 'Use the registry editor to examine the key. 'Press the Enter key to delete the key.
using System; using Microsoft.Win32; public class Example { public static void Main() { // The name of the key must include a valid root. const string userRoot = "HKEY_CURRENT_USER"; const string subkey = "RegistrySetValueExample"; const string keyName = userRoot + "\\" + subkey; // An int value can be stored without specifying the // registry data type, but long values will be stored // as strings unless you specify the type. Note that // the int is stored in the default name/value // pair. Registry.SetValue(keyName, "", 5280); Registry.SetValue(keyName, "TestLong", 12345678901234, RegistryValueKind.QWord); // Strings with expandable environment variables are // stored as ordinary strings unless you specify the // data type. Registry.SetValue(keyName, "TestExpand", "My path: %path%"); Registry.SetValue(keyName, "TestExpand2", "My path: %path%" , RegistryValueKind.ExpandString); // Arrays of strings are stored automatically as // MultiString. Similarly, arrays of Byte are stored // automatically as Binary. string[] strings = {"One", "Two", "Three"}; Registry.SetValue(keyName, "TestArray", strings); // Your default value is returned if the name/value pair // does not exist. string noSuch = (string) Registry.GetValue(keyName, "NoSuchName", "Return this default if NoSuchName does not exist."); Console.WriteLine("\r\nNoSuchName: {0}", noSuch); // Retrieve the int and long values, specifying // numeric default values in case the name/value pairs // do not exist. The int value is retrieved from the // default (nameless) name/value pair for the key. int tInteger = (int) Registry.GetValue(keyName, "", -1); Console.WriteLine("(Default): {0}", tInteger); long tLong = (long) Registry.GetValue(keyName, "TestLong", long.MinValue); Console.WriteLine("TestLong: {0}", tLong); // When retrieving a MultiString value, you can specify // an array for the default return value. string[] tArray = (string[]) Registry.GetValue(keyName , "TestArray", new string[] {"Default if TestArray does not exist."}); for(int i=0; i<tArray.Length; i++) { Console.WriteLine("TestArray({0}): {1}", i, tArray[i]); } // A string with embedded environment variables is not // expanded if it was stored as an ordinary string. string tExpand = (string) Registry.GetValue(keyName , "TestExpand", "Default if TestExpand does not exist."); Console.WriteLine("TestExpand: {0}", tExpand); // A string stored as ExpandString is expanded. string tExpand2 = (string) Registry.GetValue(keyName , "TestExpand2", "Default if TestExpand2 does not exist."); Console.WriteLine("TestExpand2: {0}...", tExpand2.Substring(0, 40)); Console.WriteLine("\r\nUse the registry editor to examine the key."); Console.WriteLine("Press the Enter key to delete the key."); Console.ReadLine(); Registry.CurrentUser.DeleteSubKey(subkey); } } // // This code example produces output similar to the following: // //NoSuchName: Return this default if NoSuchName does not exist. //(Default): 5280 //TestLong: 12345678901234 //TestArray(0): One //TestArray(1): Two //TestArray(2): Three //TestExpand: My path: %path% //TestExpand2: My path: D:\Program Files\Microsoft.NET\... // //Use the registry editor to examine the key. //Press the Enter key to delete the key.
using namespace System; using namespace Microsoft::Win32; int main() { // The name of the key must include a valid root. String^ userRoot = "HKEY_CURRENT_USER"; String^ subKey = "RegistrySetValueExample2"; String^ keyName = String::Concat(userRoot, "\\", subKey); // An int value can be stored without specifying the // registry data type, but Int64 values will be stored // as strings unless you specify the type. Note that // the int is stored in the default name/value // pair. Registry::SetValue(keyName, "", 5280); Registry::SetValue(keyName, "TestInt64", 12345678901234, RegistryValueKind::QWord); // Strings with expandable environment variables are // stored as ordinary strings unless you specify the // data type. Registry::SetValue(keyName, "TestExpand", "My path: %path%"); Registry::SetValue(keyName, "TestExpand2", "My path: %path%", RegistryValueKind::ExpandString); // Arrays of strings are stored automatically as // MultiString. Similarly, arrays of Byte are stored // automatically as Binary. array<String^>^ strings = {"One", "Two", "Three"}; Registry::SetValue(keyName, "TestArray", strings); // Your default value is returned if the name/value pair // does not exist. String^ noSuch = (String^)Registry::GetValue(keyName, "NoSuchName", "Return this default if NoSuchName does not exist."); Console::WriteLine("\r\nNoSuchName: {0}", noSuch); // Retrieve the int and Int64 values, specifying // numeric default values in case the name/value pairs // do not exist. The int value is retrieved from the // default (nameless) name/value pair for the key. int testInteger = (int)Registry::GetValue(keyName, "", -1); Console::WriteLine("(Default): {0}", testInteger); long long testInt64 = (long long)Registry::GetValue(keyName, "TestInt64", System::Int64::MinValue); Console::WriteLine("TestInt64: {0}", testInt64); // When retrieving a MultiString value, you can specify // an array for the default return value. array<String^>^ testArray = (array<String^>^)Registry::GetValue( keyName, "TestArray", gcnew array<String^> {"Default if TestArray does not exist."}); for (int i = 0; i < testArray->Length; i++) { Console::WriteLine("TestArray({0}): {1}", i, testArray[i]); } // A string with embedded environment variables is not // expanded if it was stored as an ordinary string. String^ testExpand = (String^)Registry::GetValue(keyName, "TestExpand", "Default if TestExpand does not exist."); Console::WriteLine("TestExpand: {0}", testExpand); // A string stored as ExpandString is expanded. String^ testExpand2 = (String^)Registry::GetValue(keyName, "TestExpand2", "Default if TestExpand2 does not exist."); Console::WriteLine( "TestExpand2: {0}...", testExpand2->Substring(0, 40)); Console::WriteLine( "\r\nUse the registry editor to examine the key."); Console::WriteLine("Press the Enter key to delete the key."); Console::ReadLine(); Registry::CurrentUser->DeleteSubKey(subKey); } // // This code example produces output similar to the following: // // NoSuchName: Return this default if NoSuchName does not exist. // (Default): 5280 // TestInt64: 12345678901234 // TestArray(0): One // TestArray(1): Two // TestArray(2): Three // TestExpand: My path: %path% // TestExpand2: My path: D:\Program Files\Microsoft.NET\... // // Use the registry editor to examine the key. // Press the Enter key to delete the key.
Microsoft.Win32.Registry
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Registry フィールド
Registry メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) | |
GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) | |
GetValue | 指定したレジストリ キーに含まれる、指定した名前に関連付けられた値を取得します。指定したキーに該当する名前が見つからない場合は、設定している既定値が返されます。指定したキーが存在しない場合は、null 参照 (Visual Basic では Nothing) が返されます。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) | |
SetValue | オーバーロードされます。 レジストリ キーに名前/値ペアの値を設定します。 | |
ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
Registry メンバ
Windows レジストリのルート キーを表す RegistryKey オブジェクト、およびキー/値ペアにアクセスするための static メソッドを提供します。
Registry データ型で公開されるメンバを以下の表に示します。
パブリック フィールド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) | |
GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) | |
GetValue | 指定したレジストリ キーに含まれる、指定した名前に関連付けられた値を取得します。指定したキーに該当する名前が見つからない場合は、設定している既定値が返されます。指定したキーが存在しない場合は、null 参照 (Visual Basic では Nothing) が返されます。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) | |
SetValue | オーバーロードされます。 レジストリ キーに名前/値ペアの値を設定します。 | |
ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
レジストリー
(registry から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/10/22 09:00 UTC 版)
レジストリー、レジストリ (registry)
- 1 レジストリーとは
- 2 レジストリーの概要
- registryのページへのリンク