我正在尝试将命令行参数传递给C#应用程序,但是传递类似这样的内容时遇到问题
"C:\Documents and Settings\All Users\Start Menu\Programs\App name"
即使我增加" "了论点。
" "
这是我的代码:
public ObjectModel(String[] args) { if (args.Length == 0) return; //no command line arg. //System.Windows.Forms.MessageBox.Show(args.Length.ToString()); //System.Windows.Forms.MessageBox.Show(args[0]); //System.Windows.Forms.MessageBox.Show(args[1]); //System.Windows.Forms.MessageBox.Show(args[2]); //System.Windows.Forms.MessageBox.Show(args[3]); if (args.Length == 3) { try { RemoveInstalledFolder(args[0]); RemoveUserAccount(args[1]); RemoveShortCutFolder(args[2]); RemoveRegistryEntry(); } catch (Exception e) { } } }
这就是我要传递的内容:
C:\WINDOWS\Uninstaller.exe "C:\Program Files\Application name\" "username" "C:\Documents and Settings\All Users\Start Menu\Programs\application name"
问题是我可以正确获取第一个和第二个参数,但是最后一个是as C:\Documents。
C:\Documents
有什么帮助吗?
我只是进行了检查并验证了问题。它使我感到惊讶,但这是第一个参数中的最后一个\。
"C:\Program Files\Application name\" <== remove the last '\'
这需要更多的解释,有人有想法吗?我倾向于称它为错误。
第2部分,我进行了更多测试,
"X:\\aa aa\\" "X:\\aa aa\" next
变成
X:\\aa aa\ X:\\aa aa" next
Google的一些小动作可以从Jon Galloway的博客中获得一些见识,其基本规则是: