【发布时间】:2010-01-29 16:01:54
【问题描述】:
我们的客户在其注册表中存储了一个字符串,该字符串是一个可执行命令。字符串在目标路径周围可能有也可能没有引号,并且可能有也可能没有参数。例如:
"C:\path\file.exe" 参数1=值1 参数2=值2
C:\path\file.exe param1=value1 param2=value2
"C:\path\file.exe"
C:\path\file.exe
"C:\path\file with spaces.exe" param1=value1 param2=value2
"C:\path\file with spaces.exe"
我需要获取目标路径的目录,即C:\path。
- 我尝试了
Path.GetDirectoryName,但以“路径中的非法字符”失败。 - 我也尝试创建一个
ProcessStartInfo对象,但它似乎没有解析字符串的智能。 - 我摆弄了
Uri,但也没有任何运气。
我有一个使用正则表达式的解决方案(我将在下面发布作为答案),但这似乎是“必须有一个内置的-.Net-helper-class-for-this "问题。
是否有我遗漏的课程,或者只是没有正确使用上面的课程?
【问题讨论】:
-
副话题...你能把 anything 放在这些注册表项中吗?
-
@Austin:我们需要该值作为 WiX 安装中自定义操作的一部分。该字符串由我们之前使用的安装程序软件放置在那里。因此,它受到了一些限制,但上述格式都是可能的。我不担心处理值不是有效命令字符串的情况。那只会失败。