大丈夫とは思いません。試していませんが、うまくいきませんでした。このようにしてみてください。
Registry.SetValue(String.Format("HKEY_CURRENT_USER\\Software\\MyApp\\{0}\\{1}\\{2}\\{3}", x, y, z), SettingName, SettingValue);
\\
特殊文字です。たとえば、試してみると;
Console.WriteLine("\");
コンパイラはエラーを出します。しかし、出力として書く場合\
は、好きです。
Console.WriteLine("\\");
ご覧のとおり、これはレジストリの問題ではありません。C# では、次の文字エスケープ シーケンスが定義されています。MSDNを参照してください。
\'
- 文字リテラルに必要な一重引用符
\"
- 文字列リテラルに必要な二重引用符
\\
- バックスラッシュ
\0
- Unicode 文字 0
\a
- アラート (キャラクター 7)
\b
- バックスペース (文字 8)
\f
- フォーム フィード (文字 12)
\n
- 改行 (文字 10)
\r
- キャリッジ リターン (文字 13)
\t
- 水平タブ (文字 9)
\v
- 垂直引用符 (文字 11)
\uxxxx
- 16 進値を持つ文字の Unicode エスケープ シーケンスxxxx
\xn[n][n][n]
- 16 進値を持つ文字の Unicode エスケープ シーケンスnnnn
(の可変長バージョン\uxxxx
)
\Uxxxxxxxx
- 16 進値を持つ文字の Unicode エスケープ シーケンスxxxxxxxx
(サロゲートの生成用)
また読むStructure of the Registry
各キーには、1 つ以上の印刷可能な文字で構成される名前があります。キー名は大文字と小文字が区別されません。キー名にバックスラッシュ文字 () を含めることはできませんが、その他の印刷可能な文字は使用できます。値の名前とデータにはバックスラッシュ文字を含めることができます。