O comando runas
é o que fornece essa capacidade para você. Ele permitirá que você execute qualquer programa como outra pessoa:
runas /noprofile /user:mymachine\administrator cmd
Como você pode ver na citação acima, basta especificar o usuário apropriado da lista e, assim, você executará esse usuário.
O problema nativo com esse método é o fato de que a senha irá ou a) precisar ser inserida manualmente (se o usuário não for um usuário administrador), ou b) a senha será exposta no comando runas
.
Existem outros utilitários por aí:
-
elevate
é um desses. Você pode baixá-lo aqui: WinAbility Elevate . Este programa basicamente permite que você execute qualquer comando como um usuário elevado, mesmo a partir de um prompt de comando não admin.
Para responder sua segunda pergunta; ao passar informações para o script, você tem que usar a sintaxe correta do argumento de comando:
Z:\Users\Phillip>copy con go.cmd
@echo off
echo/Passed First Parameter: %1
echo/Passed Second Parameter: %2
echo/
echo/Pased Third Formatted Parameter: /d:%3
echo/
^Z
1 file(s) copied.
Z:\Users\Phillip>go yes no ok
Passed First Parameter: yes
Passed Second Parameter: no
Pased Third Formatted Parameter: /d:ok
A sintaxe %1, %2, %3
refere-se aos parâmetros reais passados para o programa, isso pode incluir nomes de arquivos, programas, etc, desde que as informações caiam na janela como um nome de arquivo válido ou entrada de texto.
A mesma sintaxe de comando acima aplica-se também à passagem de parâmetros de linha de comando com espaços neles:
Z:\Users\Phillip>go yes no "asdfasdfasdf asdf as dfa sdf "
Passed First Parameter: yes
Passed Second Parameter: no
Pased Third Formatted Parameter: /d:"asdfasdfasdf asdf as dfa sdf "
No entanto, se você estiver arrastando / soltando, deve adquirir o hábito de realmente citar o parâmetro %3
ou qualquer parâmetro (tente sempre primeiro, alguns sistemas passam com as aspas já incorporadas, outros não, então melhor para testar primeiro.