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