uratanの日記: win7 の UAC って結局は… 12
日記 by
uratan
拙作のwuzk.exeなんかはなんにも言われないんだけど、
具体的に UAC が発動するしないの要因ってなに?
win7 の UAC って結局のところ、(windowsが決めた)ファイルのパーミッション違反を
適宜許可する作業ってことでいいのかな?
で TrustedInstaller 以上の権限はどうやったら手に入るの?
もう我々は Windows における神様にはなりえないの?
拙作のwuzk.exeなんかはなんにも言われないんだけど、
具体的に UAC が発動するしないの要因ってなに?
win7 の UAC って結局のところ、(windowsが決めた)ファイルのパーミッション違反を
適宜許可する作業ってことでいいのかな?
で TrustedInstaller 以上の権限はどうやったら手に入るの?
もう我々は Windows における神様にはなりえないの?
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
ちゃんと仕様を読みましょう (スコア:1)
特定のAPIの呼び出しにかかったり、特定のファイル、レジストリの操作などでもかかったりします。
# ほかもあるはずだがおぼえてないがw
最上位なんて不要で、必要な機能が利用できるならOKでしょ? > TrustedInstaller以上
LinuxとかもMAC(強制アクセス制御)アリは普通になってきてますし(SELinuxデフォルトとか)...
M-FalconSky (暑いか寒い)
Re:ちゃんと仕様を読みましょう (スコア:1)
Re:ちゃんと仕様を読みましょう (スコア:1)
それはもう、どのOSでもそうじゃないでしょうか...
M-FalconSky (暑いか寒い)
Re:ちゃんと仕様を読みましょう (スコア:1)
こっちは想像の域を超えているので今回はスルー。
(Hyper-V 関連?)
Re:ちゃんと仕様を読みましょう (スコア:1)
お 仕様読めますか? どこにあるんでしょう。「UACを無効にする」とかに埋もれてたどりつけてません。
「管理者アクセス許可が必要な操作」とはあってもそれが具体的に何か、というか(下へ続く)
特定のAPIの呼び出しにかかったり、特定のファイル、レジストリの操作などでもかかったりします。.
プログラムの実行に沿ってこれらのアクションに合わせて動的に出るならあんまり抵抗しないのですが、
プログラムの起動時に出る(ような気がする ※)のは、「このプログラム管理者アクセスしそう」っていう判断が
入ってるんでしょうか…。
Vistaの時代には exe のファイル名に setup を含むと当たりと判断されるなんていう情報もありましたがこれマジですか?
(※) 具体的には Ccleaner と RealVNC viewer (Free版) と Sakura watch(NTPクライアント)、
もちろんこれらプログラムが起動直後になんらかの管理者アクセスしている可能性はありますが、
ファイル・レジストリを消す/サーバーにつなぐ/時刻を修正する、の指示を出す前にUACに許可を求められます。
最上位なんて不要で、必要な機能が利用できるならOKでしょ? > TrustedInstaller以上
LinuxとかもMAC(強制アクセス制御)アリは普通になってきてますし(SELinuxデフォルトとか)...
なるほど、でも TrustedInstaller 権限を誰が取得できて誰が取得できないかは知っておきたいような気がする。
Re:ちゃんと仕様を読みましょう (スコア:1)
と書いた後で、DLL への依存関係で UAC がかかるのかな、と気づいた。
Re:ちゃんと仕様を読みましょう (スコア:1)
つっても、自分も詳しくないですが、MFCというかWin32APIの仕様の最新のには、権限の説明も入ってたはず....
> DLLへの依存
たしかにそれもあって、静的というか起動時にDLLをぜんぶロードするようなやつだとひっかかることが多いはず。
Windows本体もそうだし、一部のインストーラもそうだけど、適切に権限上昇するようにするプログラミングもできるはずだが、やったことないんだよねw
# CLIとGUIを同じソースから生成する際にあれこれ小細工はした記憶があるが、昔の職場の仕事なので、情報がなくなってるw
M-FalconSky (暑いか寒い)
Re:ちゃんと仕様を読みましょう (スコア:1)
マニフェストに仕込んでおけば最初から要求されるかと。 [microsoft.com](MSDNマガジンの記事 [microsoft.com])
誰も信じちゃいけない、裏切られるから。
私を信じないで、貴方を裏切ってしまうから。
Re:ちゃんと仕様を読みましょう (スコア:1)
求めるものずばりの解説文には至ってはいないのですが、
この↓ June 2007 の、紙に出すと 71ページよ、な読み物が非常に読み応えがあります。
Windows Vista Application Development Requirements for User Account Control Compatibility [microsoft.com]
(上は April 2007 の↓を増補したもののようで、こちらはページ数が少ない……全文は help にあるってよ!)
The Windows Vista and Windows Server 2008 Developer Story: Windows Vista Application Development Requirements for User Account Control (UAC) [microsoft.com]
マニフェストうんぬんも記載がありました。UAC に限定せず、permission/access token/Virtualization など小細工の説明がいっぱい。
(ファイル名に setup/install/update を含むかどうかを見ている、も書いてありました。)
(いつ何のために、はもっとちゃんと読んでから)
あと重要なことは、実際の exe で違反を記録するツールがあること。
Microsoft Standard User Analyzer … これがそのツールで
Microsoft Application Verifier … これはその出力画面を追加工するもの?
これマジに読もう。 Windows 舐めてたわ!
Re:ちゃんと仕様を読みましょう (スコア:1)
ちょこまか進捗を書くのがしんどくなってきたので、このへんで
終わりにしたい、なんかまとまったらwebにでも載っけます。
…全文は help にあるってよ!)
これはhelp形式に固まったドキュメントの中にあるという意味で
OSデフォルトで持っているわけではなかった。
Microsoft Standard User Analyzer … これがそのツールで
Microsoft Application Verifier … これはその出力画面を追加工するもの?
この関係は逆のよう、Verifierが一般動的解析ツールで、AnalyzerがUAC関連を
抽出・表示するツールのよう。ちなみにダウンロードリンクは以下の通り。
Microsoft Application Verifier [microsoft.com]
Microsoft Application Compatibility Toolkit 5.6 [microsoft.com]
にしても KEYBOARD_LL_HOOK を仕込むwuzk.exe [so-net.ne.jp]や
SPTI でドライブを探りに行くwvgaC.exe [so-net.ne.jp]も
その要件でピンク色で違反って出るんだけど昇格要求はないんだよなぁ。
Re:ちゃんと仕様を読みましょう (スコア:1)
もう書かないと書きつつ・・・、
(※) 具体的には Ccleaner と RealVNC viewer (Free版) と Sakura watch(NTPクライアント)、
もちろんこれらプログラムが起動直後になんらかの管理者アクセスしている可能性はありますが、
ファイル・レジストリを消す/サーバーにつなぐ/時刻を修正する、の指示を出す前にUACに許可を求められます。
がびーん! 上のうち RealVNC viewer と Sakura watch は「互換性」の「管理者として実行する」チェックが付いてた!
どたばたしているうちに付けたっぽいな。
というわけで、仕切りなおしは正しい判断だ。
想像による仮まとめ (スコア:1)
もう書かないと書きつつ、また、見つけたドキュメントも読んでいないんだが・・・、以下、眉唾。
そもそもの勘違いは、
『UAC って、権限が足りない時(違反した時)に「足りないよ、どうする?」って来てその場で昇格するもの』
だと思っていたこと。これがどうも間違いで、
『権限が足りない処理要求は失敗するもの』 が基本のようである、非常にあたりまえだ。
(この勘違いの側面(ある種のものは確認後救済する)も並存していてフォーカスがぼやけてるのかもしれない・・・)
これからのアプリは、権限が必要な処理毎に昇格確認をするようプログラムしなさい、ということのようで、
権限を意識してない古いアプリに関しては、sudo つけないと処理に失敗するから、sudo つけると(起動時に)
passwd 聞かれる(画面暗転)みたいな感じのよう。