何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 36166
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

Windows Vista の新しい UAC の機能 (セキュリティ) でコードが例外を出す場合の対処について 【Part 2】(松崎 剛 ブログ (Tsuyoshi Matsuzaki Blog))より:

以前、UAC について記載しましたが(こちら)、この方法ではマニフェストを作成する方法のため、動的に解決できないか(実行中に UAC の昇格が必要になったら昇格し普段はしたくない、など) とご質問を受けることがたまにあります。
そこで今回は、UAC で昇格をおこなうもう1つの方法について記載します。

結論から記載しますが、この方法は起動中の状態を維持したまま昇格するというものではありませんが、UAC の昇格を実行時に動的に解決して昇格することは可能です。(Vista の新しい Recovery の仕組みと組み合わせられるといろいろできるかもしれません、、、)

こちら("Developer Best Practices and Guidelines for Applications in a Least Privileged Environment" 英文)。下へ、少しスクロールしてください。

  1. 実行する処理を、COM オブジェクト化する
  2. 呼び出す関数をエキスポートする
  3. 実行のトリガーとなるコントロールを、シールドアイコンで修飾する
  4. CoCreateInstanceAsAdmin() API 関数にて COM オブジェクトを作成する
  5. エキスポートしてある関数を呼び出す
投稿日時 : 2007年1月26日 22:08
コメント
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/01/27 13:13
    ふと思ったんですケド…
    この方法、ユーザが「BUILTIN/Administrators」グループに属しているかどうか判断していますよね。
    気になるのは、このグループは何か特殊な権限を持っているのかどうか、ということです。
    イベントログに出力するのにどんな権限が必要なのかわかりませんが、それは「Administrators」でないと持ち得ない権限なのか、それとも、一般ユーザにも付与してやれば成功する権限なのか。
    後者だとすれば、Administratorsというグループは、「コンピュータを管理するのに必要と思われる権限をデフォルトで持っているグループ」に過ぎず、他のユーザやグループにも同じ権限を付与してやれば、Administratorsと全く同じことが出来るようになるのではないかと思うのです(それが適切かどうかは別問題として)。
    そのようなことが可能なのかどうか…
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/01/27 13:16
    イベントログへの出力は
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog
    へのサブキー作成・読み取り権限と同じでいいのかなぁ。
  • # re: UAC の動的昇格
    ちゃっぴ
    Posted @ 2007/01/27 14:26
    > イベントログへの出力は
    > HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog
    > へのサブキー作成・読み取り権限と同じでいいのかなぁ。

    Event log の ACL は registry に SDDL で
    書かれています。

    Windows Server 2003 のイベント ログのセキュリティをローカルまたはグループ ポリシーで設定する方法
    http://support.microsoft.com/default.aspx?kbid=323076

    @IT には何度か書いているけど。

    ついでに service の ACL も registry に SDDL で書かれていますね。

    あ、Vista か。多分同じだと思いますが・・・

    Vista の UAC に関する検証していないのでなんともいえませんが、security の例外はその secuirty 例外が発生してから別の制御を行うのが適切でしょう。

    Administrators group に参加しているかで判断すると、適切な ACL を有しているのにもかかわらず実行できないなんて制限が大きくなるだけだと思います。
  • # re: UAC の動的昇格
    Jitta
    Posted @ 2007/01/27 15:37
    ちゃっぴさん、解説ありがとうございます。

    閑話:なんでトラックバックが送れるときとおくれないときがあるんだろう?これで送れるかな? http://blogs.msdn.com/tsmatsuz/archive/2007/01/25/windows-vista-uac-part-2.aspx

     あまり深く読んでいなかったのですが、改めて読んでいると、最後の方、ちょっと違和感。
    > また、管理者ロールでないユーザでログインした場合の動きへの配慮が不充分ではありますね。

     この書き方だと、Administrators グループのアカウントであっても、IsAdmin が false を返す、、、ってとれません?
     シャノンさんのおっしゃる、『Administratorsというグループは、「コンピュータを管理するのに必要と思われる権限をデフォルトで持っているグループ」』は、この部分においては正しいです。しかし、『過ぎない』わけではありません。
     Administrators グループの場合、昇格起動は「はい/いいえ」だけです。しかし、Users グループは、Administrators グループのアカウントの、アカウント名とパスワードが必要です。また、そのとき入力したアカウントによって実行されたものとして、プロセスが起動します。
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/01/27 16:31
    >> ちゃっぴさん

    > Event log の ACL は registry に SDDL で書かれています。
    > ついでに service の ACL も registry に SDDL で書かれていますね。

    ふむふむ。
    ちなみに、これは XP にも当てはまりますか?
    後でレジストリいじって試してみたいと思いますが。

    あと、イベントログ以外ではどうでしょう?
    例えば、ファイルやプロセス等といったカーネルオブジェクトだと、作成時に ACL を指定できますが、指定できないものもあります。
    この問題を考え始めたきっかけは、LSA ポリシーです。
    LsaOpenPolicy という API でポリシーを開けますが、現在のユーザ権限だと ACCESS_MASK に何を指定できるのかを、事前に知ることが出来るかどうかということでした(もっとさかのぼって言うと、他のユーザの特権を変える(LsaAddAccountRights API でできます)には、どのような権限があれば可能なのかということです)。
    これが Administrators でなければ不可能なのか、適切な権利を付与してやれば Users でも可能なのか。
    最近、技術掲示板等で「Administratorsにも○○を禁止したい」という質問を見るのですが、(望ましいかどうかは別として)Administratorsから、「特権を設定する権利」を剥奪できれば、可能ではないかと思ったものですから。
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/01/27 16:34
    > Administrators グループの場合、昇格起動は「はい/いいえ」だけです。しかし、Users グループは、Administrators グループのアカウントの、アカウント名とパスワードが必要です。

    それは、Vista においては Administraros というグループが特殊な扱いを受けているということでしょうか。
    Users グループのユーザーでも、その操作に必要な権限を与えられていれば、「はい/いいえ」になるのではないかという疑問です(繰り返しますが、純粋に技術的興味であって、そのような運用をするかどうかは別問題です)。
  • # re: UAC の動的昇格
    ちゃっぴ
    Posted @ 2007/01/27 17:50
    > ちなみに、これは XP にも当てはまりますか?

    いえ、これは 2003 からの実装です。

    2003 からより security を向上させるにあたって、過去との互換性のためにも必要だったのでしょう。

    > LsaOpenPolicy という API でポリシーを開けますが、現在のユーザ権限だと ACCESS_MASK に何を指定できるのかを、事前に知ることが出来るかどうかということでした(もっとさかのぼって言うと、他のユーザの特権を変える(LsaAddAccountRights API でできます)には、どのような権限があれば可能なのかということです)。

    ここら辺、非常に興味があるんですが、ちゃんとした検証していないのでなんともいえません。

    とりあえず、Administrators group に所属している user なら編集できるわけですが、この設定を行う実態がどこかにあって、そいつも ACL を持っているでしょうから、それで制限したらできるのではないか?という気もします。

    > Administrators group に参加しているかで判断すると、適切な ACL を有しているのにもかかわらず実行できないなんて制限が大きくなるだけだと思います。

    これを書いたのにはもう一つ理由があって、現在では Administrators group に所属していれば実行できるが、将来の OS ではどう?というのもあります。
  • # re: UAC の動的昇格
    Jitta
    Posted @ 2007/01/28 22:02
    > Users グループのユーザーでも、その操作に必要な権限を与えられていれば、「はい/いいえ」になるのではないかという疑問です
    ああ、やってないですね。
    ただ、バグだと思うのですが、奇妙な動きはあります。
    たとえば、管理ツールの中の、印刷の管理。Administrators だと昇格プロンプトがでますが、Users だと、出ません。出来ることは同じ(Users だと、削除が出来なかったかも)。
    どうも、UAC まわりは、不安定な気がします。
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/01/29 11:26
    >> ちなみに、これは XP にも当てはまりますか?
    > いえ、これは 2003 からの実装です。

    ありがとうございます。
    とすると、元ネタにあった「イベントログへのアクセスはAdministratorでないと例外が飛ぶ」というのは、何を見て不許可にしているのでしょうかね。やっぱりグループ名がハードコーディングされてるのかなぁ。

    > Administrators group に参加しているかで判断すると、適切な ACL を有しているのにもかかわらず実行できないなんて制限が大きくなるだけだと思います。

    御意。

    > この書き方だと、Administrators グループのアカウントであっても、IsAdmin が false を返す、、、ってとれません?

    それは無いと思いますが、Administrators グループに所属していないけれど適切な実行権限を持っている場合、ちゃっぴさんのおっしゃるように、「本当は実行できるのに IsAdmin が false を返す」ということはあり得るように思います。

    根本的な疑問は、「管理者権限」とは一体何か、ということですね。
    ACL や特権の集合であるなら、一般ユーザにも付与することが可能なはずです。
    それとも、管理者権限とは「Administrators グループに属していること」なのでしょうか。
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/01/29 11:39
    以前に調べたことを載せておきます。
    http://forums.belution.com/ja/vc/000/358/09s.shtml
    なお、文中では「ファイル」と書いていますが、カーネルオブジェクト一般に言えることだと思います。
  • # re: UAC の動的昇格
    えむけい
    Posted @ 2007/02/01 0:26
    > ただ、バグだと思うのですが、奇妙な動きはあります。
    > たとえば、管理ツールの中の、印刷の管理。Administrators だと昇格プロンプトがでますが、Users だと、出ません。出来ることは同じ(Users だと、削除が出来なかったかも)。

    mmc.exeに<requestedExecutionLevel level="highestAvailable"なmanifestが埋め込まれているというだけの話です。
    レジストリエディタも同様です。常に昇格したら標準ユーザーのHKEY_CURRENT_USERが通常の手段ではいじれなくなってしまいますよね?
    (実際、sysdm.cplはrequiredAdministratorなので標準ユーザーのユーザー環境変数がいじれなくて困ってます)

    > どうも、UAC まわりは、不安定な気がします。

    自分の無知をVistaのバグのせいにしないでください。
  • # re: UAC の動的昇格
    シャノン
    Posted @ 2007/02/01 12:04
    > 自分の無知をVistaのバグのせいにしないでください。

    そういう仕様だから仕方ないと言えば仕方ないけれど、そもそも昇格じゃなくてユーザ切り替えであるという設計はどうなのよ? と。
  • # re: UAC の動的昇格
    Jitta
    Posted @ 2007/02/01 21:46
    えむけいさん、コメントありがとうございます。

    > 自分の無知をVistaのバグのせいにしないでください。
    や、まさに、その通りです。

     ただ、・・・いや、明日、確認してからにしよっと。
  • # re: UAC の動的昇格
    ちゃっぴ
    Posted @ 2007/04/09 1:19
    UAC の内部でやっていることをぶったぎる - その1
    http://blogs.wankuma.com/tyappi/archive/2007/04/09/70645.aspx
  • # UAC の内部でやっていることをぶったぎる - その1
    ちゃっぴの監禁部屋
    Posted @ 2007/04/09 2:19
    UAC の内部でやっていることをぶったぎる - その1
  • # re: UAC の動的昇格
    オショウ
    Posted @ 2009/06/19 12:45
    時間が経過し、OSも2008 Server(評価版)なんですが
    見てしまったので、情報として投稿してみます。

    2008 Server でAdministratorでログインした状態で、
    Googleブラウザをインストール・起動する。

    初回のプロセスには、Admin権限が存在するが、2個目以降
    のプロセス(タブ表示や別ウィンドウ表示)には、Admin権
    限が無い状態で起動している。

    確認方法には、CreateToolhelp32Snapshotで全プロセス
    情報を取得し、一般的に公開されているAdministrator権
    限所有の取得で行いました。

    これは・・・
    > Administrators グループのアカウントであっても、IsAdmin が false を返す
    と言うことになっていると思われますが。

    どうなんでしょうか?

    UAC昇格に関するいろいろなプログラムを作っていて、
    VISTA/Win7/2008 Serverでテストしていて発見しました

    以上。
  • # re: UAC の動的昇格
    Jitta
    Posted @ 2009/06/23 18:26
    オショウさん、コメントありがとうございます。

    ここでしている私のコメント、かなり間違いが含まれているように思います。
    Administrators は、UAC がオンだと、「管理特権を得ることが出来る」です。普通に起動すると、管理特権を持っていません。
    管理特権を得るのは、runas を使います。つまり、ユーザーを変更している扱いになります。なので、偽装を解除すると、管理特権を失います。
    そんな風に動いていませんか?

    って、サーバーの Administrator か。よく知りません。ごめんなさい。
  • # tfzq20589
    RobertHap
    Posted @ 2016/07/04 10:02
    xzyq58620
    slwt40179

    http://www.thirstbrooklyn.com/p-aid-7560.html
    http://www.thirstbrooklyn.com/p-aid-14951.html
    http://www.thirstbrooklyn.com/p-aid-7060.html
    http://www.thirstbrooklyn.com/p-laid-18385.html
    http://www.thirstbrooklyn.com/p-aid-3869.html
    http://www.thirstbrooklyn.com/p-aid-3518.html
    http://www.thirstbrooklyn.com/p-laid-3553.html
    http://www.thirstbrooklyn.com/p-laid-8839.html
    http://www.thirstbrooklyn.com/p-aid-13774.html
    http://www.thirstbrooklyn.com/p-aid-2255.html
    http://www.thirstbrooklyn.com/p-laid-17890.html
    http://www.thirstbrooklyn.com/p-aid-14645.html
    http://www.thirstbrooklyn.com/p-aid-1060.html
    http://www.thirstbrooklyn.com/p-laid-16310.html
    http://www.thirstbrooklyn.com/p-laid-12913.html
  • # pinnywinkle
    TXssfvoc
    Posted @ 2016/07/13 4:09
    futuristic
    http://www.ukonlinepaydayloans.top/p-laid-73118.html
    http://www.ukonlinepaydayloans.top/p-aid-116296.html
    http://www.ukonlinepaydayloans.top/p-aid-299663.html
  • # wkff88974
    RobertHap
    Posted @ 2016/07/13 5:32
    21268
    http://www.createnfljersey.top/p-laid-15039.html
    http://www.createnfljersey.top/p-aid-26568.html
    http://www.createnfljersey.top/p-aid-46299.html
    http://www.createnfljersey.top/p-laid-68205.html
    http://www.createnfljersey.top/p-aid-86193.html
    http://www.createnfljersey.top/p-aid-100519.html
    http://www.createnfljersey.top/p-aid-129634.html
    http://www.createnfljersey.top/p-aid-153436.html
    http://www.createnfljersey.top/p-aid-172277.html
    http://www.createnfljersey.top/p-laid-185558.html
    http://www.createnfljersey.top/p-aid-200549.html
    http://www.createnfljersey.top/p-laid-232485.html
    http://www.createnfljersey.top/p-aid-257250.html
    http://www.createnfljersey.top/p-aid-264299.html
    http://www.createnfljersey.top/p-laid-299311.html
  • # rnew4269d nfl youth flag football ohio
    GlennTix
    Posted @ 2017/07/14 20:56
    nfl point spreads vegas https://www.gradeajerseys.net cheap jerseys
  • # Oh my goodness! Incredible article dude! Thanks, However I am having problems with your RSS. I don't know why I am unable to join it. Is there anybody getting the same RSS problems? Anyone who knows the solution will you kindly respond? Thanx!!
    Oh my goodness! Incredible article dude! Thanks, H
    Posted @ 2019/04/05 6:40
    Oh my goodness! Incredible article dude! Thanks, However I am having problems with your RSS.
    I don't know why I am unable to join it. Is there anybody getting the same RSS problems?

    Anyone who knows the solution will you kindly respond?

    Thanx!!
  • # Yes! Finally someone writes about descargar facebook.
    Yes! Finally someone writes about descargar facebo
    Posted @ 2019/08/19 0:03
    Yes! Finally someone writes about descargar facebook.
  • # Yes! Finally someone writes about descargar facebook.
    Yes! Finally someone writes about descargar facebo
    Posted @ 2019/08/19 0:04
    Yes! Finally someone writes about descargar facebook.
  • # Yes! Finally someone writes about descargar facebook.
    Yes! Finally someone writes about descargar facebo
    Posted @ 2019/08/19 0:05
    Yes! Finally someone writes about descargar facebook.
  • # Yes! Finally someone writes about descargar facebook.
    Yes! Finally someone writes about descargar facebo
    Posted @ 2019/08/19 0:06
    Yes! Finally someone writes about descargar facebook.
タイトル
名前
Url
コメント