Aqui está um método simples que usei no Windows 7 ao Windows 10. Basicamente, eu simplesmente uso o comando "IF EXIST" para verificar a pasta Windows \ System32 \ WDI \ LogFiles. A pasta WDI existe em todas as instalações do Windows, de pelo menos 7 em diante, e requer privilégios de administrador para acessá-la. A pasta WDI sempre tem uma pasta LogFiles dentro dela. Portanto, executar "IF EXIST" na pasta WDI \ LogFiles retornará verdadeiro se executado como administrador e falso se não for executado como administrador. Isso pode ser usado em um arquivo em lote para verificar o nível de privilégio e desviar para quaisquer comandos que você deseja com base nesse resultado.
Aqui está um breve trecho de código de exemplo:
IF EXIST %SYSTEMROOT%\SYSTEM32\WDI\LOGFILES GOTO GOTADMIN
(Commands for running with normal privileges)
:GOTADMIN
(Commands for running with admin privileges)
Lembre-se de que este método assume que as permissões de segurança padrão não foram modificadas na pasta WDI (o que é improvável de acontecer na maioria das situações, mas consulte a advertência nº 2 abaixo). Mesmo nesse caso, é simplesmente uma questão de modificar o código para verificar se há um arquivo / pasta comum diferente que requer acesso de administrador (System32 \ config \ SAM pode ser um bom candidato alternativo), ou você pode até mesmo criar seu próprio especificamente para isso objetivo.
No entanto, existem duas advertências sobre esse método:
Desativar o UAC provavelmente irá quebrá-lo pelo simples fato de que tudo seria executado como administrador de qualquer maneira.
Tentar abrir a pasta WDI no Windows Explorer e clicar em "Continuar" quando solicitado adicionará direitos de acesso permanentes para essa conta de usuário, quebrando assim meu método. Se isso acontecer, pode ser corrigido removendo a conta do usuário das permissões de segurança da pasta WDI. Se, por algum motivo, o usuário PRECISA ser capaz de acessar a pasta WDI com o Windows Explorer, será necessário modificar o código para verificar uma pasta diferente (conforme mencionado acima, criar sua própria pasta especificamente para esse fim pode ser uma boa escolha) .
Portanto, admito que meu método não é perfeito, pois pode ser quebrado, mas é um método relativamente rápido e fácil de implementar, é igualmente compatível com todas as versões do Windows 7, 8 e 10, e desde que eu esteja ciente das advertências mencionadas foi 100% eficaz para mim.
echo > somefile
em um diretório que exigiria privilégios de administrador. ele produziria um arquivo como um efeito colateral, mas você poderia verificar se há colisões e criar um nome de arquivo exclusivo como uma solução alternativa.