![以管理员身份运行批处理文件时如何获取当前登录的用户名](https://linux22.com/image/1497601/%E4%BB%A5%E7%AE%A1%E7%90%86%E5%91%98%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E6%97%B6%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%99%BB%E5%BD%95%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D.png)
我有一个批处理文件,可以运行它来修改程序文件中文件夹的权限。当当前用户具有本地管理员权限时,它可以正常运行,但对于没有本地管理员权限的用户,我必须输入域管理员密码才能使更改生效。当我仔细检查文件夹的权限设置时,它显示域管理员对该文件夹具有完全控制权。
我如何确保当前用户已登录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%