我正在尝试将命令行参数传递给 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"
问题是我可以正确获得第一个和第二个参数,但最后一个参数是C:\Documents
.
有什么帮助吗?
我刚刚进行了检查并验证了问题所在。这让我感到惊讶,但这是第一个参数中的最后一个 \ 。
"C:\Program Files\Application name\" <== remove the last '\'
这需要更多解释,有人有想法吗?我倾向于称其为错误。
第 2 部分,我又进行了一些测试
"X:\\aa aa\\" "X:\\aa aa\" next
becomes
X:\\aa aa\
X:\\aa aa" next
谷歌的一点行动提供了一些见解乔恩·加洛韦的博客,基本规则是:
- 反斜杠是转义字符
- 总是逃避引号
- 仅当反斜杠位于引号之前时才转义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)