Windowsを使っていると、突然こんなメッセージに出会うことがあります。
- アクセスが拒否されました
- 管理者権限が必要です
- 管理者として実行してください
そう表示されると我々は
- 管理者アカウントでログインしているはずなのに、なぜ?
- そもそも管理者権限って何?
- PowerShell を管理者で開くってどういう意味?
と疑問を持つわけです。
実はWindowsの管理者権限は、
単なる強い権限ではなく、OSを守るための安全装置として設計された仕組みです。
そしてこの仕組みを理解していないと、cmdや開発ツール、パッケージマネージャ(Chocolateyなど)で必ずつまずきます。
本記事では、前半に管理者権限の概念をゼロから整理し、後半には**管理者権限を使用する方法(昇格)**を紹介します。
まず、権限とは何か
Windowsには、ファイル、フォルダ、レジストリ、サービス、ネットワーク設定など、さまざまな操作対象があります。
それぞれに対して、
- 読み取り可能
- 書き込み可能
- 削除可能
- 設定変更可能
といったできることの範囲が細かく決められています。
権限とは、ユーザーごとに触ってよい場所と触ってはいけない場所を区別する仕組みのことなのです。
権限はなぜ必要?
権限が存在する理由はとてもシンプルで、Windows を壊されないようにするためです。
もし権限がなかったら、
誰でもシステムの重要ファイルを削除できてしまいますし、ウイルスが勝手に設定を書き換えることも簡単になります。
権限は、次の3つを守るために存在します。
- システムの安全性(誤操作やウイルスから守る)
- ユーザーのデータ(他人に勝手に見られないために)
- OSの安定性(重要な設定が勝手に変わらない)
権限の管理
Windowsでは、権限はユーザー単体ではなく、
グループという単位でまとめて管理されます。
代表的なグループは次の3つ。
-
Users/一般ユーザー
- 基本的な操作だけできる、安全な立場
-
Administrators/管理者)
-
Windowsの深い部分を操作できる資格を持つ
-
-
SYSTEM/システム
-
Windows内部が使う最強の権限
-
ここで重要なのは、
管理者アカウントは管理者権限を使う資格を持っているだけで、
常に管理者権限が有効なわけではないという点です。
この違いが、後で出てくる昇格/Run as Administratorにつながります。
管理者権限を使う方法
Windowsを使っているとよく耳にする管理者アカウントと管理者権限は、名前が似ているため同じものだと思われがちですが、別の概念です。
管理者アカウントとは
管理者アカウントとは、管理者権限を使う資格を持っているユーザーのことです。
たとえ自身が管理者アカウントであっても、常に管理者権限が有効になっているわけではありません。
昇格
管理者アカウントが管理者権限を使うには、昇格/Run as Administratorという操作が必要です。
本記事の後半では、Windowsのコマンドプロンプトを例に、実際に昇格を行って、管理者権限を取得してみようと思います。
管理者権限を取得する方法
このセクションでは、管理者権限がないとできない操作(C:\Program Files)へのディレクトリ作成を例に、cmdで昇格を行ってみたいと思います。
管理者権限なしで実行しようとした場合
mkdirコマンドで、C:\Program Files\直下に、TestFolderというファイルを作成したいと思います。
>mkdir "C:\Program Files\TestFolder"
アクセスが拒否されました。
この操作は、普通にやっても管理者権限がないため、アクセスが拒否されます。
昇格して実行
Windowsキーを押下して、cmdを出し、管理者権限として実行をクリックしてください。
アイコンの右クリックでも出すことができます。
コマンドプロンプトの実行中に管理者権限の変更をできるようにすると、安全性に問題があるため、起動時に昇格を行うような設計になっています。
>mkdir "C:\Program Files\TestFolder"
管理者権限があるため、実行できました。
総括
-
権限とはOS側が誰が何をしてよいかを決める安全装置 -
管理者アカウントは管理者権限を使用する資格を持つだけで、常に権限が有効なわけではない - 起動時に
GUIから管理者権限として実行ボタンをクリックすることで、管理者権限が付与された状態でコマンドを打つことが可能になる


