以管理员身份运行批处理文件时如何获取当前登录的用户名

以管理员身份运行批处理文件时如何获取当前登录的用户名

我有一个批处理文件,可以运行它来修改程序文件中文件夹的权限。当当前用户具有本地管理员权限时,它可以正常运行,但对于没有本地管理员权限的用户,我必须输入域管理员密码才能使更改生效。当我仔细检查文件夹的权限设置时,它显示域管理员对该文件夹具有完全控制权。

我如何确保当前用户已登录Windows 是否获得完全权限?

这是该批处理文件的一部分:

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

如果你有困难

如果你正在跑步命令执行程序使用 RUNAS 并确定%userdomain%\%username%变量不要设置(或列出)预期值您需要使用它来使 ICACLS 命令按预期工作,然后运行以下命令命令执行程序在使用 RUNAS 功能查找当前登录的域和用户名凭据值,然后您可以使用 ICACLS 命令用于设置该权限身份\安全主体

SET Identity=%userdomain%\%username%
ECHO %Identity%

相关内容