Receio que não exista uma solução simples para o que você está tentando fazer.
-
cmd
não é muito interativo, e os scripts devem ser executados sem atenção humana. - outra limitação está na maneira como o UAC funciona: um processo só pode ser elevado quando é iniciado; Depois que um processo é iniciado, ele tem privilégios de administrador ou não. Portanto, no seu caso, para cada comando que poderia levar ao prompt do UAC, você precisa codificar as duas formas: onde o script tem permissão para copiar sem elevação e com a elevação.
Você não pode programar a elevação com cmd
, a menos que tenha uma ferramenta adicional que lide com elevação para você e continue com o comando que falhou com permissões regulares.
Se você concordasse com a maneira como funcionava no Windows XP, a solução mais simples seria executar o script com privilégios de administrador.
Se o objetivo do seu script é copiar um único arquivo e isso é tudo que o script faz, criar um utilitário que seja legal com o UAC parece ser um exagero.
Você pode criar um atalho, o arquivo .lnk, para o seu script. Em seguida, nas propriedades de atalho, na aba Atalho , clique no botão Avançado e marque Executar como administrador . Clique em OK duas vezes para salvar as alterações.
Quando você clicar em tal atalho, verá o prompt do UAC para Windows Command Processor (porque ele executa .cmd
files).