Как получить текущее имя пользователя при входе в систему при запуске командного файла от имени администратора
Он работает нормально, когда текущий пользователь имеет права локального администратора, но для тех, кто не является, я должен ввести пароль администратора домена, чтобы изменения вступили в силу.
В приведенном ниже примере вы просто устанавливаете переменную с переменными среды, как у вас уже есть в логике команд ICACLS, а затем используете эту переменную, чтобы указать учетную запись, чтобы предоставить применимые разрешения, передавая ее в подпрограмму CALL .
@ECHO OFF
SET Identity=%userdomain%\%username%
CALL :ICACLS "%Identity%"
GOTO EOF
:ICACLS
runas /user:MYDOMAIN\USER icacls "program files directory" /grant %~1:F
GOTO EOF
Если у вас есть проблемы
Если вы запускаете cmd.exe с RUNAS и определяете, что %userdomain%\%username% не устанавливают (или не перечисляют) ожидаемые значения, которые необходимо использовать для работы команд ICACLS, как ожидается, выполните команду Ниже приведены команды в cmd.exe, прежде чем использовать функциональность RUNAS для поиска текущих значений учетных данных в домене и имени пользователя, которые затем можно использовать с командами ICACLS для установки разрешений для этого удостоверения \ участника безопасности.
SET Identity=%userdomain%\%username%
ECHO %Identity%