Why is this happening?
Você não forneceu outros exemplos além do Bitvise, mas parece ser um problema do UAC. Se o programa não for executado com os privilégios elevados necessários e, portanto, for necessário para exibir um prompt do UAC, a saída será gravada em um STDOUT diferente (novo?). Assim, a segunda janela do cmd E por que o redirecionamento de texto padrão para um arquivo de saída (>) parece não funcionar. Esta pergunta StackOverflow parece confirmar isso.
Por que ele funciona no XP, ele não tem o UAC. Da mesma forma, você pode obter o mesmo comportamento na linha de comando do Windows 7 com um prompt de comando elevado:
-
Executar - > cmd.exe - > Ctrl + Shift - Digite
-
Navegue até onde o instalador do Bitvise estiver localizado e execute-o com a opção -help; a saída será normal.
How could it be solved/workarounded?
Quanto a uma solução para executar esses programas a partir da linha de comando sem o redirecionamento STDOUT pelo prompt do UAC para esse programa, os comentários finais na pergunta acima fornecem uma pista de que você pode usar o PowerToys de elevação para conseguir isso.
-
Faça o download do arquivo de aqui (link no topo da página do PowerToys da Elevação). Este é realmente um arquivo, clique duas vezes para extrair os arquivos de onde você gosta (sugiro uma pasta!).
-
Quando os arquivos forem extraídos, copie os arquivos elevate.cmd e elevate.vbs e coloque-os em algum lugar útil (no mesmo diretório).
-
Crie um arquivo em lote , certificando-se de levar em consideração os caminhos apropriados para elevate.cmd. Isso ainda mostrará um prompt do UAC, mas não para o Bitvise, e isso faz toda a diferença.
@echo off setlocal enabledelayedexpansion set CmdDir=%~dp0 set CmdDir=%CmdDir:~0,-1% :: Check for Mandatory Label\High Mandatory Level whoami /groups | find "S-1-16-12288" > nul if "%errorlevel%"=="0" ( echo Running as elevated user. Continuing script. ) else ( echo Not running as elevated user. echo Relaunching Elevated: "%~dpnx0" %* if exist "%CmdDir%\elevate.cmd" ( set ELEVATE_COMMAND="%CmdDir%\elevate.cmd" ) else ( set ELEVATE_COMMAND=elevate.cmd ) set CARET=^^ !ELEVATE_COMMAND! cmd /k cd /d "%~dp0" !CARET!^& call "%~dpnx0" %* goto :EOF ) :: Continue script here BvSshClient-Inst.exe -help BvSshClient-Inst.exe -help > txt.txt echo Arguments passed: %*
As instruções básicas sobre como instalar alguns desses brinquedos são aqui .