「おれんじ」です。
Windows10環境でプログラムを実行する際に、既に管理者権限なのに「管理者権限で実行しなさい」という内容のメッセージが表示されて処理が続行できない問題が発生する場合があります。
わたしの場合は「Node.js」をインストールしようとしたときに、この現象に遭遇してインストールすることができませんでした。
色々調べてみたのですが解決できず、思いつきでやってみた方法で回避できました。
本記事では、管理者権限を求められた際に確認するべき項目と設定、それでも解決できなかったときのための対処方法を紹介します。
権限の確認と管理者権限を付与をする方法
プログラムを実行する際に「管理者権限で実行しなさい」という内容のメッセージが表示されているので、まずはメッセージを信じて現在のユーザーの権限を確認します。
確認した結果、ログイン中のユーザーに管理者権限が付与されていなければ、付与することで問題が解決するかもしれません。
わたしの場合は、確認したときに既に管理者権限が付与されていたので、この方法では解決しませんでしたが念のための確認です。
Windows10のエディションの違いにより、推奨される権限の設定方法が変わってきますのでエディションごとに説明します。
Windows10 ProもしくはEnterpriseの場合
エディションがWindows10 ProもしくはEnterpriseの場合は、[管理ツール]でログイン中のユーザー情報の確認と権限の付与ができます。
他のエディションでも[管理ツール]から[システムツール]-[ローカルユーザーとグループ]が使用できる場合は、[管理ツール]からの操作を推奨します。
- スタートメニューから[Windows システムツール]-[Windows 管理ツール]を選択
- [管理ツール]-[コンピューターの管理]を起動
- [システムツール]-[ローカルユーザーとグループ]-[ユーザー]を展開
- ログイン中のユーザー名をダブルクリックしてプロパティを展開
- [所属するグループ]タブを展開
- [所属するグループ]に[Administrators]が存在していることを確認
[所属するグループ]に[Administrators]がない場合は、管理者権限を持っていないので以下の手順で権限を追加します。
- [所属するグループ]タブの[追加]ボタンを押下
- 展開した[グループの選択]ダイアログで[詳細設定]ボタンを押下
- 展開したダイアログで[検索]ボタンを押下
- [検索結果]から[Administrators]を選択して[OK]ボタンを押下していきダイアログをすべて閉じる
Windows10 Homeの場合
エディションがWindows10 Homeの場合は、[管理ツール]の[システムツール]-[ローカルユーザーとグループ]が使用できないため、コントロールパネルから確認および設定をします。
- スタートメニューから[Windows システムツール]-[コントロール パネル]を選択
- [ユーザー アカウント]カテゴリの[アカウントの種類の変更]を選択
- ユーザーアカウントの一覧でログイン中のユーザが[Administrator]になっていることを確認
ユーザーアカウントの一覧でログイン中のユーザが[Administrator]になっていない場合は、管理者権限を持っていないので以下の手順で権限を変更します。
- ユーザーアカウントの一覧からログイン中のユーザー名をクリックして設定画面に遷移
- [アカウントの種類の変更]を選択
- ラジオボタンから[管理者]を選択して[アカウントの種類の変更]ボタンを押下
[アカウントの種類の変更]画面のラジオボタンですが、画面遷移直後は現在の設定値ではない権限が選択状態になっています。
現在の権限が選択されていると勘違いしないようにしましょう。
設定されている権限のラジオボタンを選択した場合は、[アカウントの種類の変更]ボタンが押せない状態になりますが、管理者権限が設定できないとあわてないでください。
それは既に管理者権限になっているということです。
管理者としてプログラムを実行する
インストーラ(msiファイル)や実行ファイル(exeファイル)を右クリックしたとき、[管理者として実行]という項目が表示されている場合、ここから起動すれば管理者権限で起動できるので問題なく実行できます。
表示されてない場合は、プロパティを確認してプロパティ内から管理者として実行するように設定しましょう。
- 対象ファイルを右クリックする
- 表示されたコンテキストメニューの[プロパティ]を選択
- プロパティダイアログの[互換性]タブを選択
- [設定]-[管理者としてこのプログラムを実行する]チェックボックスにチェックを入れる
- [OK]ボタンを押下してプロパティダイアログを閉じる
管理者として実行する設定をしたアイコンから起動すると、管理者権限となるのでプログラムの実行やインストールも問題なくできるようになります。
わたしが試したときは、[管理者としてこのプログラムを実行する]チェックボックスがグレーアウトしていて、チェックを入れることができませんでした。
実行ファイルのショートカットを作成して、そのショートカットアイコンのプロパティで[管理者として実行]を設定できる場合もあるのですが、今回は駄目でした。
[管理者として実行]も選べない場合の対処方法
ここまでの正攻法で解決しないと頭を抱えてしまいますよね。
わたしもそうでしたが、ちょっとした閃きで解決できました。
その方法とは「管理者として実行したコマンドプロンプトからファイルを実行する」という方法です。
- Windowsのスタートメニューから[Windows システムツール]を展開
- [コマンドプロンプト]を右クリック
- 展開するコンテキストメニューから[その他]-[管理者として実行]を選択
- 管理者権限で実行したいファイルのアイコンをShiftキーを押しながら右クリック
- コンテキストメニューから[パスのコピー]を選択
- 管理者権限で起動しているコマンドプロンプト上で右クリックしてパスを貼り付け
- Enterキーを入力
- プログラムが管理者権限で起動する
管理者として実行したコマンドプロンプトから起動すれば、実行したプログラムやインストーラも管理者権限で起動したことになりました。
これで管理者なのに管理者権限を求められてしまう問題は回避できました。
管理者権限で実行するためのバッチファイルを作る
インストーラのように一回限りの使用であれば、手動でコマンドプロンプトを管理者権限で起動していくのでも良いですが、何度も使うようなプログラムの場合は面倒くさいですよね。
何度も使用する場合は、コマンドプロンプトを管理者権限で実行して、そこから指定したファイルを実行するバッチファイルを作成するのがお勧めです。
バッチファイルの作成は、テキストエディタを開いて後述するソースコードをコピー&ペーストしてください。
バッチファイルを作成する際の改行コードは「LF」にしたら動かなかったので「CRLF」にする必要があるようです。
また文字コードは「SJIS」にしないとファイル名の2バイト文字が上手く処理できませんでした。
バッチの処理の流れは、ソースコードのコメントを読めば判るようにしてあります。
実行ファイル固定の場合
管理者権限で実行したいファイルが決まってる場合は、ソースコード内でファイルを直接指定して作成しておくとダブルクリックで実行できるので便利です。
汎用的に使えるバッチファイルを作成したい場合は、次の項目で記載するファイルのドラッグ&ドロップで実行するバッチファイルを作成した方が良いと思います。
@echo off rem 管理者権限で起動したいファイルのパスをセット set file_path="C:Users¥Public¥Desktop¥hogehoge.exe" rem セットしたパスからファイルを起動するためのバッチファイルを出力する echo %file_path% >start_up.bat rem powershellで起動用のバッチファイルを管理者権限で実行する powershell start-process start_up.bat -verb runas -WindowStyle Minimized rem 出力したバッチファイルを削除する del start_up.bat exit
四行目の「C:Users¥Public¥Desktop¥hogehoge.exe
」の部分を、実行したいファイルのパスに変更して拡張子「.bat」で保存してください。
保存したバッチファイルをダブルクリックすると管理者権限で実行するための確認ダイアログが表示されるので、許可すれば管理者としてファイルが実行されます。
指定したファイルを起動するときは、このバッチファイルから起動すれば面倒がありません。
汎用的に使用できるバッチファイル
管理者権限が必要になるファイルが決まっておらず、そういうファイルが出てきたときのための汎用的に使えるバッチファイルを作成したい場合のソースコードです。
@echo off rem ドラッグ&ドロップされたファイル数分ループ for %%f in (%*) do ( rem 取得したパスからファイルを起動するためのバッチファイルを出力する echo %%f >start_up.bat rem powershellで起動用のバッチファイルを管理者権限で実行する powershell start-process start_up.bat -verb runas -WindowStyle Minimized rem 出力したバッチファイルを削除する del start_up.bat ) exit
管理者権限で実行したいファイルを作成したバッチファイルのアイコンにドラッグ&ドロップすると、管理者権限で実行するための確認ダイアログが表示されるので、許可すれば管理者としてファイルが実行されます。
ダブルクリックよりも手間がかかりますが、ソースコード内でファイル名の指定をしていないので汎用的に使えます。
一応、複数ファイルをまとめてドラッグ&ドロップしたときも動作するようにしています。
おわりに
管理者として実行したコマンドプロンプトならば、そこから実行したプログラムも管理者権限の傘下だろうと思い、試してみたら上手くいきました。
結局、ユーザーの権限が[Administrators]なのに、管理者権限を求められる原因は判りませんでしたけどね。