PowerShellやバッチファイルで管理者特権をチェック

  • 17
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

PowerShellやバッチファイルで,
管理者として実行」したかどうかを判定する例文は下記の通り.

PowerShell

if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
        [Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Output "管理者として実行しました. シンボリック・リンクの作成を試みます. "
    CMD /C MKLINK /D "$Env:HOME\.emacs.d" "$Env:USERPROFILE\Dropbox\.emacs.d"
}

else {
    Write-Warning "管理者として実行していません. シンボリック・リンクの作成はできません. "
    exit 1
}

(ifの条件式が長いので, 文末の`(バッククォート)により,
条件式を複数行に分けて書いていることに注意. )

参考

バッチファイル

NET SESSION > NUL 2>&1
IF %ERRORLEVEL% == 0 (
    ECHO 管理者として実行しました. シンボリック・リンクの作成を試みます.
    MKLINK /D %HOME%\.emacs.d %USERPROFILE%\Dropbox\.emacs.d
) ELSE (
    ECHO 管理者として実行していません. シンボリック・リンクの作成はできません. >&2
    EXIT /B 1
)

(NET SESSIONは本来の用途ではなく, 単に管理者特権の有無の判定に使用されている.
よって, NET SESSIONでなくとも, 管理者特権が必要なコマンドであれば良いようだ. )

参考