为什么命令行参数无法被识别?

为什么命令行参数无法被识别?

我有一个用 C# 为 .NET 4.0 编写的小型控制台应用程序。该应用程序采用 2 个参数,即“-run”或“-clr”。因此,它将通过命令行调用,如下所示

MyConsoleApp.exe -run

我已经在 Windows 8.1(多台计算机)、Server 2012、Windows 7 和 7 SP1 中测试了此应用程序。我已在这些计算机上以管理员和标准用户身份对其进行了测试,且未提升权限。它在所有这些情况下均能正常工作。

我有一个在 Windows 7 SP1 上运行它的客户端,当他们通过命令行运行它时,它无法识别参数。如果他们通过计划任务运行它,它就可以正常工作。

奇怪的是,该参数正在被读取,因为应用程序将在命令窗口中打印错误,指出该参数不正确。例如

MyConsoleApp.exe -abc

将输出

Invalid switch/value found [-abc]. Program has stopped.

当客户端使用“-run”参数运行我提到的第一个命令时,他们会收到

Invalid switch/value found [-run]. Program has stopped.

他们提供了尝试运行命令窗口后的屏幕截图,输入的内容均正确。如果他们通过计划任务运行该应用程序,并在设置操作时在“添加参数”字段中输入“-run”参数,该应用程序便可正常工作。

我最初在这里将这个问题作为编程问题提交https://stackoverflow.com/questions/29109764/net-console-app-args-not-matching-case但由于它在我的所有测试环境中都有效,并且当客户端在计划任务中使用它时,代码中似乎没有任何错误。

有人知道为什么它在命令提示符下不起作用但在计划任务中起作用吗?我认为这可能与命令提示符窗口设置有关,但所有设置都特定于窗口的外观。第三方应用程序(可能是防病毒软件或其他程序)是否有可能阻止它正常工作?

编辑:客户端肯定是全小写输入参数的。我通过他们提供的截图证实了这一点。

相关内容