Posso obter o prompt do UAC para o usuário do arquivo de lote?

3

Posso obter o prompt do UAC para o usuário do arquivo de lote?

Por exemplo, eu preciso colocar algumas chaves para o registro em CurrentControlSet do arquivo em lote

  reg import path\to\my.reg

PS . runas não é uma solução, pois meus clientes usam uma localização diferente do Windows e não consigo adivinhar qual nome usado para a conta de administrador (isso pode ser Администратор ) ...

E o script não sabe a senha do administrador.

A caixa de diálogo UAC não requer a inserção de senha ...

    
por gavenkoa 30.10.2011 / 15:12

3 respostas

1

Eu automaticamente gero arquivos .js e .bat . A partir de .js , chame .bat para que .bat possa executar ações privilegiadas (como adicionar valores ao registro como no exemplo).

JS:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var curdir = fso.GetParentFolderName(WScript.ScriptFullName);

var objShell = new ActiveXObject("shell.application");
// http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745.aspx
//                 Shell.ShellExecute method
// iRetVal = Shell.ShellExecute( sFile, [ vArguments ], [ vDirectory ], [ vOperation ], [ vShow ] )
objShell.ShellExecute("regimport.bat", curdir, "", "runas", 1); 

BAT:

cd /d %1

reg import env_set.reg
pause
reg import env_del.reg
pause 

cd é essencial para a execução inicial do arquivo bat de % WINDIR% ...

    
por 31.10.2011 / 00:35
3

Eu realmente amo esta solução da Anders .

@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
    cscript //E:JScript //nologo "%~f0"
    @goto :EOF
)
reg import path\to\my.reg
@goto :EOF
@end @ELSE
ShA=new ActiveXObject("Shell.Application")
ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+"\"","","runas",5);
@end

Deve funcionar sem falhas

    
por 26.02.2013 / 13:26
2

Crie um atalho para reg.exe, forneça os argumentos necessários e defina o sinalizador "executar como administrador" e inicie o atalho a partir do arquivo em lote.

    
por 30.10.2011 / 22:38