Após algumas experiências, notei que runas.exe
sempre define o diretório de inicialização do programa como System32
, enquanto Executar como usuário diferente define o direcionamento inicial para a pasta que contém o EXE.
Prova
Isso pode ser demonstrado criando um arquivo em lotes que contém algo como:
echo %cd%
pause
Coloque-o em uma pasta acessível a todos os usuários. Se você executá-lo apenas clicando duas vezes no File Explorer, ele mostrará o diretório que o contém. Ele fará o mesmo se você usar Executar como usuário diferente . Se você abrir uma janela Prompt de Comando e executar runas /user:otheruser test.bat
, ela falhará ("nenhum arquivo") se test.bat
não estiver no outro usuário ou no PATH
do sistema. Isso porque runas
começa em System32
. Se você fizer runas /user:otheruser \full\path\to\test.bat
, ele será iniciado e exibirá o caminho para System32
, porque esse é o seu diretório inicial.
Corrigindo o problema
O programa em questão faz coisas estranhas (mas não trava) se não vir certos arquivos em seu diretório atual / inicial. Atualize o arquivo em lote para usar runas
em um arquivo em lote que primeiro cd
s no diretório correto e, em seguida, inicie o programa.