Eu tenho um pequeno aplicativo de console escrito em C # para .NET 4.0. O aplicativo usa 2 parâmetros, "-run" ou "-clr". Então seria chamado via linha de comando assim
MyConsoleApp.exe -run
Eu testei esse aplicativo no Windows 8.1 (várias máquinas), Server 2012, Windows 7 e 7 SP1. Eu testei isso nessas máquinas como Admin e um usuário padrão sem permissões elevadas. Está funcionando em todas essas situações.
Eu tenho um cliente que está executando no Windows 7 SP1 e quando eles o executam via linha de comando, ele não está reconhecendo os parâmetros. Se eles o executarem via Scheduled Task, ele funciona.
A parte estranha é que o parâmetro está sendo lido porque o aplicativo irá imprimir um erro na janela de comando indicando o parâmetro inválido. Por exemplo
MyConsoleApp.exe -abc
A saída será
Invalid switch/value found [-abc]. Program has stopped.
Quando o cliente executa o primeiro comando que mencionei com o parâmetro "-run", eles recebem
Invalid switch/value found [-run]. Program has stopped.
Eles forneceram uma captura de tela da janela de comando depois de tentar executá-la, e estão digitando tudo corretamente. O aplicativo funciona corretamente se for executado por meio da tarefa agendada, inserindo o parâmetro "-run" no campo "Adicionar argumentos" ao configurar a ação.
Inicialmente enviei a pergunta como uma questão de programação aqui link mas como funciona em todos os meus ambientes de teste e quando o cliente o usa em uma tarefa agendada, não parece haver algo errado no código.
Alguém tem alguma idéia por que pode não funcionar no prompt de comando, mas funciona em uma tarefa agendada? Eu pensei que poderia ter algo a ver com as configurações da janela de prompt de comando, mas todas as configurações são específicas para a aparência da janela. É possível que um aplicativo de terceiros (talvez um antivírus ou algo assim) evite que isso funcione corretamente?
EDIT: O cliente está definitivamente digitando o parâmetro em todas as letras minúsculas. Confirmei isso com a captura de tela que eles forneceram.