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

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

У меня есть пакетный файл, который я могу запустить для изменения разрешений на папку в Program Files. Он работает нормально, когда у текущего пользователя есть локальные права администратора, но для пользователей, у которых их нет, мне нужно ввести пароль администратора домена, чтобы изменения вступили в силу. Когда я дважды проверяю настройки разрешений для папки, он показывает, что администратор домена имеет полный контроль над этой папкой.

Как мне гарантировать, чтотекущий пользователь вошел в системуокна получают полное разрешение?

Вот что у меня есть в этом пакетном файле:

icacls "program files directory" /grant %userdomain%\%username%:F

решение1

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

Все работает нормально, если у текущего пользователя есть права локального администратора, но для пользователей, у которых таких прав нет, мне придется ввести пароль администратора домена, чтобы изменения вступили в силу.

В приведенном ниже примере вы просто устанавливаете переменную с переменными среды, которые уже есть в вашей логике команды ICACLS, а затем используете эту переменную для указания учетной записи, чтобы предоставить соответствующие разрешения, передавая ееВЫЗОВрутина.

@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%

Связанный контент