今天我遇到了一个前所未有的问题。我正在尝试检查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");
答案 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之前。