我正在尝试将命令行参数传递给C#应用程序,但我有问题传递这样的东西
"C:\Documents and Settings\All Users\Start Menu\Programs\App name"
Run Code Online (Sandbox Code Playgroud)
即使我加入" "了这个论点.
这是我的代码:
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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我要传递的内容:
C:\WINDOWS\Uninstaller.exe "C:\Program Files\Application name\" "username" "C:\Documents and Settings\All Users\Start Menu\Programs\application name"
Run Code Online (Sandbox Code Playgroud)
问题是我可以正确地获得第一个和第二个args,但是它得到的最后一个args C:\Documents.
有帮助吗?
Hen*_*man 27
我刚刚检查并验证了问题.这令我感到惊讶,但这是第一个论点中的最后一个.
"C:\Program Files\Application name\" <== remove the last '\'
Run Code Online (Sandbox Code Playgroud)
这需要更多解释,有人有想法吗?我倾向于把它称为一个错误.
第2部分,我又进行了一些测试
"X:\\aa aa\\" "X:\\aa aa\" next
Run Code Online (Sandbox Code Playgroud)
变
X:\\aa aa\
X:\\aa aa" next
Run Code Online (Sandbox Code Playgroud)
谷歌的一些小动作可以从Jon Galloway的博客中获得一些见解,基本规则如下:
添加Ian Kemp的答案
如果您的程序集被称为"myProg.exe"并且您传入字符串"C:\ Documents and Settings\All Users\Start Menu\Programs\App name"链接,那么
C:\>myprog.exe "C:\Documents and Settings\All Users\Start Menu\Programs\App name"
Run Code Online (Sandbox Code Playgroud)
字符串"C:\ Documents and Settings\All Users\Start Menu\Programs\App name"
将在args [0].
| 归档时间: |
|
| 查看次数: |
69281 次 |
| 最近记录: |