管理者としてバッチファイルを実行するときに、現在ログインしているユーザー名を取得するにはどうすればいいですか

管理者としてバッチファイルを実行するときに、現在ログインしているユーザー名を取得するにはどうすればいいですか

プログラム ファイル内のフォルダーへのアクセス許可を変更するために実行できるバッチ ファイルがあります。現在のユーザーがローカル管理者権限を持っている場合は問題なく実行されますが、権限を持っていないユーザーの場合は、変更を有効にするためにドメイン管理者のパスワードを入力する必要があります。フォルダーのアクセス許可設定を再確認すると、ドメイン管理者が該当のフォルダーを完全に制御していることが示されます。

どうすれば現在ログインしているユーザー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%

関連情報