将文件路径保存为注册表中的子键
本文关键字:注册表 文件 路径 保存 | 更新日期: 2023-09-27 17:50:23
我目前将文件路径保存到Windows注册表中的子键,如下所示:
Registry.SetValue(String.Format("HKEY_CURRENT_USER'Software'MyApp'{0}'{1}'{2}'{3}", FilePath.Replace("'", "/"), x, y, z), SettingName, SettingValue)
由于Windows注册表不接受子键名称中的字符'
,因此我将其替换为/
。
所以我想知道这是否可以,如果有任何其他字符,一个文件名可以有,但一个子键名不能有?
反斜杠是唯一不允许的字符。看这篇文章
回答你隐含的问题,这是否可以:它可能是更优雅的存储整个文件路径作为一个字符串值的关键。如果您需要在键名本身中表示文件结构,那么您的方法可能是最干净的。
我不这么认为。我没有试过,但是行不通。
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
- Form feed(字符12) -
'n
-新行(字符10) -
'r
-回车(字符13) -
't
-水平制表符(字符9) -
'v
-垂直引号(字符11) -
'uxxxx
-十六进制值xxxx
字符的Unicode转义序列 -
'xn[n][n][n]
-十六进制值为nnnn
的字符的Unicode转义序列('uxxxx
的可变长度版本) -
'Uxxxxxxxx
-十六进制值为xxxxxxxx
的字符的Unicode转义序列(用于生成代理)
另读Structure of the Registry
每个键都有一个由一个或多个可打印字符组成的名称。键名不区分大小写。键名中不能包含反斜杠字符(),但任何其他可打印字符都可以使用。值名和数据可以包含反斜杠字符。