大丈夫とは思いません。試していませんが、うまくいきませんでした。このようにしてみてください。
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 つ以上の印刷可能な文字で構成される名前があります。キー名は大文字と小文字が区別されません。キー名にバックスラッシュ文字 () を含めることはできませんが、その他の印刷可能な文字は使用できます。値の名前とデータにはバックスラッシュ文字を含めることができます。