以管理員身分執行批次檔時如何取得目前登入的使用者名

以管理員身分執行批次檔時如何取得目前登入的使用者名

我有一個批次文件,可以運行它來修改程式文件中資料夾的權限。當當前用戶具有本機管理員權限時,它可以正常運行,但對於沒有本機管理員權限的用戶,我必須輸入網域管理員密碼才能進行更改。當我仔細檢查資料夾的權限設定時,它顯示網域管理員對所述資料夾具有完全控制權。

我如何確保目前使用者登入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%

相關內容