2013-08-24 46 views
-1

我从注册表中读取启动项,并检查是否存在相关的文件。C#中排除参数档案路径

实例注册表值:

"C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe" MSRun 

C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe MSRun 

"C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe" /parameter 

"C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe" -paramaeter1 -parameter2 

C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe -MSRun /parameter 

"C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe -MSRun /parameter" 

我怎么能排除的参数?我只想要C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\amd64\CLIStart.exe部分。

如何操作系统使得这种分离?

+0

我不认为有一个内置的方法来做到这一点。我要做的是首先删除引号,然后'Path.GetExtension',删除(包括)扩展名中的第一个空格之后的所有内容,然后再将“Path.Combine”再次合并到一起。 – Corak

+0

@Corak当注册表值就像是它失败的 “C:\ Program Files文件(x86)的\ WinPcap的\ rpcapd.exe” -d -f “C:\ Program Files文件(x86)的\ WinPcap的\ rpcapd.ini” – user2617750

+0

好吧,尝试再次删除引号,然后用空格“string.Split”。然后尝试如果第一个'File.Exists',然后是'+ =“”+ second'等等,直到'File.Exists'返回true。 - 或者如果它以引号开始,找到下一个,并介于两者之间。 – Corak

回答

0

任何机会一门功课演习是这样吗? 无论如何,这将达到想要的结果。

return yourPath.Trim('\"').Substring(0, yourPath.LastIndexOf(".exe") + 3); 
+0

但文件扩展名可能有所不同,它并不总是一个可执行文件。 -d -f “C:\ Program Files文件(x86)的\ WinPcap的\ rpcapd.ini” – user2617750

+0

“我只是想:当注册表值是像 ”\程序文件(x86)\ WinPcap的\ rpcapd.txt C“ 会失败C:\ Program Files(x86)\ ATI Technologies \ ATI.ACE \ Core-Static \ amd64 \ CLIStart.exe部分。“我认为你只会希望由此来判断可执行文件。我会试着想一些事情(目前有点忙,可能需要一段时间),并在稍后的某个时候更新答案。 – EvilBeer