2013-08-24 45 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