• ベストアンサー

管理者アカウントなのに管理者実行要求の意味

既に管理者アカウントでWindowsログインしているにも拘らず、「管理者権限で実行」を求められることがよくあります。 マイクロソフト社のコミュニティ過去問を参照すると、 「毎回承認しないといけないのは仕様通りであり、至って正常です。」 と回答されているのを見ました。 これでは何のための管理者権限アカウントなのか? ますます意味が判らなくなりました。 なぜWindowsのアプリ開発設計仕様書は、このように無意味な仕様に決まったのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

>レジストリ変更を伴うアプリの他に、UACが自動で働くにはどんな重要変更要素がありますでしょうか? システムフォルダ内への書き込み、Program Filesフォルダへの書き込みなどがあります。 権限が必要なレジストリ変更は、レジストリ全部ではなく、システムレジストリなど、一部のレジストリだけです。 >またこの二重ダメ押し確認の機能は、アプリ設計者がUACを働かせるようにプログラミングしていなくてもOS側が自動検知するということは、起動前にEXEやDLLが重要システム変更をするかどうか、どのように判定できるようになっていますでしょうか? アプリがメモリにロードされ「プロセス」として起動されると、個々のプロセスは「アクセストークン」というデータを親プロセスから引き継ぎます。 このアクセストークンには「このプロセスで何が許されているか」が設定されています。 現在実行中のプロセスが、何らかの「権限」が無いと実行できないWindows APIを呼び出す場合は、このアクセストークンに「権限を付与」してから、APIを呼び出す事になります(権限が無いままAPIを呼ぶと、問答無用でエラーで戻って来るので、プロセスをエラーで終了させるしかなくなります) アクセストークンに必要な権限を付与する場合も、それを行うWindows APIを呼び出す事になります。 このAPIの呼び出しで、幾つかの動作に分かれます。 ・管理権限の無い一般ユーザーで実行していた場合 UACが呼び出される前に、API呼び出しが権限無しエラーで戻ります。結果、プロセスはエラーで終了します。 ・管理権限のある管理者ユーザーで実行していたが「管理者として実行」で実行していない場合 UACが呼び出され、ユーザーに確認を求めます。ユーザーが拒否するとAPI呼び出しがエラーで戻り、プロセスがエラーで終了します。ユーザーが許可するとAPIが実行され、アクセストークンに権限が付与され、実行が継続します。 ・管理権限のある管理者ユーザーで実行していて「管理者として実行」で実行していた場合 権限付与を行うAPIを呼ぶと、APIが実行され、アクセストークンに権限が付与され、実行が継続します。UACはユーザーに確認を求めずスルーします。 >セキュリティスキャン等が事前に完了しきれていない場合には、悪意の変更がなされるソフトでもダメ押しUACが働かず即座に動作してしまうものでしょうか? 上記の3つ目の「管理権限のある管理者ユーザーで実行していて「管理者として実行」で実行していた場合」に相当するので、UACはスルーされ、悪意あるプロセスは権限を獲得し動作を継続してしまうでしょう。

altosax
質問者

お礼

大変勉強になりました! EXE実行に先立ちアクセストークンのチェックをする、というOS仕様が、UACの基本理念ということだったのですね! 本当にありがとうございました。

Powered by GRATICA

その他の回答 (5)

  • luka3
  • ベストアンサー率72% (424/584)
回答No.5

管理者アカウントと言えども、常に管理者モードになっている訳ではなく、 普段はユーザーモードで動いていて、ユーザーアカウントとの違いは 管理者にしか見れないフォルダを開ける程度です。 WindowsXPまでは管理者アカウントであれば常に管理者モードで動いてましたが、 これだとあらゆる処理が実行可能となり、 うっかりウイルスを開いたときに簡単にシステムを乗っ取られる事態が多発しました。 この反省から、システムエリア内のファイルの書き込みや削除、 レジストリ(システム設定が詰まった一種のデータベース)を変更しようとする プログラムの実行など、システムの変更に関わることは、 明示的に「ココから管理者モードになって変更しますよ」という意味で 「管理者実行要求」をするようになった、ということだと思います。 管理者アカウントは「常に管理者モードで動くユーザー」ではなく、 「管理者モードになってシステム変更する権利を持ったユーザー」 ということになります。

altosax
質問者

お礼

なるほど、XP時代の反省なのですね! あの頃の悲劇を思い出すと、非常に納得できました。 どうも有難う御座います。

Powered by GRATICA
  • dell_OK
  • ベストアンサー率13% (766/5722)
回答No.4

そうですよね。 私も同じように思っていました。 でも、考え方を変えました。 「管理者として実行する」管理者とは、コンピューター内をどうのこうのする管理者ではなく、コンピューターそのものとそれに関連するものをどうのこうのする管理者という風に。 これを実行する者はその影響でコンピューターがどうかなってしまっても責任を負う、ということです。 簡単に言うと、壊れてもいい、という覚悟ですね。 データがどこかに流れてしまったらその責任も負うってことです。 管理者実行要求は、その覚悟を問われているのであって、実行した人間に責任を負わせる、おどしのメッセージだと思うことにしています。

altosax
質問者

お礼

なるほど、駄目押しをしてくれる親切機能への仕様変更だったのですね。 自分は管理者だから何が起きても自己責任、と割り切れない儘に管理者アカウントを使う人が続出した訳ですね。

Powered by GRATICA
  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.3

> これでは何のための管理者権限アカウントなのか? ログインしている権限は「管理者権限アカウント」ではなくて、 「管理者アカウント」権限です。 管理者アカウントでWindowsログインしていても万能ではありません。 システムに変更を行なうような重要な処理は「管理者アカウント」を「管理者権限に昇格させて実行」する必要があります。 > なぜWindowsのアプリ開発設計仕様書は、このように無意味な仕様に決まったのでしょうか? 「無意味」ではなくて「極めて重要な意味がある」からです。

altosax
質問者

お礼

有難う御座います。 NTFSになったばかりの頃、NTと2000は業務用で管理者の概念が皆解っていたからこそ、今でいうザルな全権でも問題にならなかった訳ですね。 とても良く判りました。

Powered by GRATICA
回答No.2

管理者アカウントは「管理者じゃないと実行できないプログラムを実行できるアカウント」です。言い換えれば、パソコン上のすべてのファイルやアプリにアクセスする事が許されています。 しかし、管理者アカウントでアプリを普通にクリックして実行しても、起動したアプリに管理者権限は付与されません。安全のため、一般ユーザーが起動したのと同じ状態で起動されます。 もし、起動したアプリが「悪意ある物」だった場合、権限がフルに与えられて実行されてしまうと、悪意あるアプリ作成者に、パソコン内のファイルすべてにアクセスされ、個人情報が抜き取られてどこかに送信されたり、クレジットカード情報と暗証番号が抜き取られて悪用されてしまいます。 ですので、例え管理者アカウントで実行するとしても、単純なダブルクリックでの起動は「安全な、一般の、低い権限でのみ実行する」ようになっているのです。 で、本当に管理者権限を与えて「何でも出来てしまう状態で実行する」時は、ワザと「管理者権限で実行」を選ばないといけない仕様にしているのです。 なので「管理者権限で実行」と指示されていても、安易に管理者権限で実行せず、実行したいプログラムをセキュリティソフトでスキャンするなど「安全なのを確実に確認」した上で「管理者権限で実行」して下さい。

altosax
質問者

補足

大変ためになりました。 レジストリ変更を伴うアプリの他に、UACが自動で働くにはどんな重要変更要素がありますでしょうか? またこの二重ダメ押し確認の機能は、アプリ設計者がUACを働かせるようにプログラミングしていなくてもOS側が自動検知するということは、起動前にEXEやDLLが重要システム変更をするかどうか、どのように判定できるようになっていますでしょうか? セキュリティスキャン等が事前に完了しきれていない場合には、悪意の変更がなされるソフトでもダメ押しUACが働かず即座に動作してしまうものでしょうか?

  • 121CCagent
  • ベストアンサー率52% (15558/29899)
回答No.1

Windowsの「権限:管理者」について cloud-sup.cybersolutions.co.jp/hc/ja/articles/900004179986 みたいなのを参考にして見るとか…

altosax
質問者

お礼

どうも有難う御座います。 参考にさせていただきますね。

Powered by GRATICA

関連するQ&A