この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

RegistryKey.SetValue メソッド (String, Object)

 

公開日: 2016年10月

指定した名前/値ペアを設定します。

名前空間:   Microsoft.Win32
アセンブリ:  mscorlib (mscorlib.dll 内)

public void SetValue(
	string name,
	object value
)

パラメーター

name
Type: System.String

格納する値の名前。

value
Type: System.Object

格納するデータ。

Exception Condition
ArgumentNullException

valuenull です。

ArgumentException

valueサポートされていないデータ型です。

ObjectDisposedException

RegistryKeyを含む、指定された値が閉じられた (閉じたキーにアクセスすることはできません)。

UnauthorizedAccessException

RegistryKeyは読み取り専用とできません書き込みができません。 たとえば、キーが書き込みアクセスで開かれていません。

または

RegistryKeyオブジェクト、ルート レベル ノードを表すし、オペレーティング システムが Windows Millennium Edition または Windows 98 です。

SecurityException

ユーザーには、作成またはレジストリ キーを変更するために必要なアクセス許可がありません。

IOException

RegistryKeyオブジェクト、ルート レベル ノードを表すし、オペレーティング システムが Windows 2000、Windows XP、または Windows Server 2003 です。

使用する必要がある多くの値は、レジストリ内の各キーに格納されることができます、ので、nameパラメーターを設定する特定の値を指定します。

System_CAPS_noteメモ

レジストリ キーには、1 つの値を任意の名前に関連付けられていないことができます。 レジストリ エディターでこの無名の値が表示されたら、名の代わりに、文字列「(既定値)」が表示されます。 この無名の値を設定するには、どちらかを指定nullまたは空の文字列 ("") のnameします。

キーの値を設定するためには、書き込みアクセス権を持つキーを開く必要があります。 書き込みアクセス権を持つキーを開くと後、は、そのキーの名前/値ペアのいずれかを変更できます。

場合、指定したname存在しないキーが作成され、関連付けられている値に設定されてvalueです。

このオーバー ロードSetValue64 ビット整数値を文字列として格納 (RegistryValueKind.String)。 として 64 ビットの数値を格納するRegistryValueKind.QWord、値を使用して、SetValue(String, Object, RegistryValueKind)オーバー ロードを指定するRegistryValueKindです。

このオーバー ロードのSetValueとしてすべての文字列値を格納RegistryValueKind.String環境変数を展開可能な参照が含まれている場合でも、します。 文字列値に展開可能な文字列を保存する (RegistryValueKind.ExpandString)、使用して、SetValue(String, Object, RegistryValueKind)を指定するオーバー ロードRegistryValueKindです。

32 ビット整数以外の数値の型は、このメソッドのオーバー ロードで文字列として格納されます。 列挙体の要素は、要素名を含む文字列として格納されます。

System_CAPS_caution注意

公開しないRegistryKeyこと悪意のあるプログラムが何千もの無意味なサブキーを作成またはキー/値ペアよう内のオブジェクト。 たとえば、任意のキーまたは値を入力する呼び出し元を許可しないでください。

System_CAPS_noteメモ

Windows 98 および Windows Millennium Edition レジストリが、Unicode ですべての Unicode 文字は、すべてのコード ページに対して無効です。 現在のコード ページに対して無効な Unicode 文字は、使用可能な最適の一致に置き換えられます。 例外をスローすることはありません。

次のコード例に示す方法、SetValueメソッドは、値を設定するときにレジストリのデータ型を決定します。 この例では、テスト キーを作成し、キーに別のデータ型の値を追加します。 名前/値ペアの読み取りし、コンソールに表示しの例を使用して、GetValueKindメソッドを対応するレジストリ データ型を表示します。

using System;
using Microsoft.Win32;

public class Example
{
    public static void Main()
    {
        // Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistrySetValueExample", false);
        RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistrySetValueExample");

        // Create name/value pairs.

        // Numeric values that cannot be interpreted as DWord (int) values
        // are stored as strings.
        rk.SetValue("LargeNumberValue1", (long) 42);
        rk.SetValue("LargeNumberValue2", 42000000000);

        rk.SetValue("DWordValue", 42);
        rk.SetValue("MultipleStringValue", new string[] {"One", "Two", "Three"});
        rk.SetValue("BinaryValue", new byte[] {10, 43, 44, 45, 14, 255});

        // This overload of SetValue does not support expanding strings. Use
        // the overload that allows you to specify RegistryValueKind.
        rk.SetValue("StringValue", "The path is %PATH%");


        // Display all name/value pairs stored in the test key, with each
        // registry data type in parentheses.
        //
        string[] valueNames = rk.GetValueNames();
        foreach (string s in valueNames)
        {
            RegistryValueKind rvk = rk.GetValueKind(s);
            switch (rvk)
            {
                case RegistryValueKind.MultiString :
                    string[] values = (string[]) rk.GetValue(s);
                    Console.Write("\r\n {0} ({1}) = \"{2}\"", s, rvk, values[0]);
                    for (int i = 1; i < values.Length; i++)
                    {
                        Console.Write(", \"{0}\"", values[i]);
                    }
                    Console.WriteLine();
                    break;

                case RegistryValueKind.Binary :
                    byte[] bytes = (byte[]) rk.GetValue(s);
                    Console.Write("\r\n {0} ({1}) = {2:X2}", s, rvk, bytes[0]);
                    for (int i = 1; i < bytes.Length; i++)
                    {
                        // Display each byte as two hexadecimal digits.
                        Console.Write(" {0:X2}", bytes[i]);
                    }
                    Console.WriteLine();
                    break;

                default :
                    Console.WriteLine("\r\n {0} ({1}) = {2}", s, rvk, rk.GetValue(s));
                    break;
            }
        }
    }
}

RegistryPermission

to modify the specified registry key if it exists, or to create the registry key if it does not already exist. Associated enumerations: F:System.Security.Permissions.RegistryPermissionAccess.Write, F:System.Security.Permissions.RegistryPermissionAccess.Create

SecurityPermission

for the ability to access the specified registry key if it is a remote key. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode

.NET Framework
1.1 以降で使用可能
トップに戻る
表示: