3

Могу ли я получить запрос UAC для пользователя из командного файла?

Например, мне нужно положить некоторые ключи в реестр под CurrentControlSet из командного файла

  reg import path\to\my.reg

PS runas не является решением, так как мои клиенты используют другую локализацию Windows, и я не могу угадать, какое имя используется для учетной записи администратора (это может быть Администратор)...

И скрипт не знает пароль администратора.

И диалоговое окно UAC не требует ввода пароля ...

3 ответа3

3

Я действительно люблю это решение от Андерса.

@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

Должен работать без нареканий

2

Создайте ярлык для reg.exe, задайте ему необходимые аргументы и установите флаг "Запуск от имени администратора", затем запустите ярлык из командного файла.

1

Я автоматически генерирую файлы .js и .bat . Из .js вызовите .bat, чтобы .bat мог выполнять привилегированные действия (например, добавлять значения в реестр, как в примере).

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); 

ЛЕТУЧАЯ МЫШЬ:

cd /d %1

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

cd важен, так как запуск bat-файла начинается с % WINDIR%...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .