C#:字符串连接不起作用

时间:2013-01-05 11:35:14

标签: c# string concatenation

今天我遇到了一个前所未有的问题。我正在尝试检查Windows注册表中的值是否存在文件。更具体地说,我从Flight Simulator获取安装路径并检查是否安装了模块。

我得到的注册表项很好,它被转换为一个字符串(从一个对象),但我似乎无法连接它后面的文件名(之前很好)。

RegistryKey pRegKey = Registry.CurrentUser;
pRegKey = pRegKey.OpenSubKey(@"Software\Microsoft\Microsoft Games\Flight Simulator\10.0");
string fSPath = pRegKey.GetValue("AppPath").ToString(); // Receives "S:/Apps/FSX/"

如果我显示这样的消息框,则它不会连接:

MessageBox.Show(fSPath + "Modules");

2 个答案:

答案 0 :(得分:3)

尝试GetValue的其他重载方法:

GetValue Method (String, Object)
GetValue Method (String, Object, RegistryValueOptions)

并使用RegistryKey.GetValueKind方法获取与指定名称关联的值的注册表数据类型。

我们有three registry data types字符串:

  

String 以null结尾的字符串。此值等同于Win32 API注册表数据类型REG_SZ

     

ExpandString 以空字符结尾的字符串,其中包含未扩展的环境变量引用,例如%PATH%,当值为检索。此值等同于Win32 API注册表数据类型REG_EXPAND_SZ

     

MultiString 以空字符结尾的字符串数组,以两个空字符结尾。此值等同于Win32 API注册表数据类型REG_MULTI_SZ

答案 1 :(得分:2)

添加以下行:

string fSPath = fsPath.Replace("\0","");

在使用messagebox之前。