LoginSignup
18
20

More than 1 year has passed since last update.

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

Last updated at Posted at 2012-12-26

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でなくとも, 管理者特権が必要なコマンドであれば良いようだ.

参考

18
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
20