Vista対策 Service Pack 1

このエントリーをはてなブックマークに追加
22デフォルトの名無しさん
APIスレだとすぐ過去ログに埋もれてしまうのでこっちにコピペ

436 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 21:33:13
Vistaで、管理者権限で起動されても、制限ユーザーにダウンさせるAPIを教えてください。

445 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/27(月) 04:22:51
だからFirefoxのソース見ろ
インストーラやアップデータが最後にFirefoxを起動するとき権限降格やってる

472 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/28(火) 00:14:17
しょーがねーなーほれ
http://mxr.mozilla.org/seamonkey/source/toolkit/xre/nsWindowsRestart.cpp#234

474 名前:471[sage] 投稿日:2007/08/28(火) 00:43:21
>>472
どうもありがとう。
結局、プロセスの起動は CreateProcessWithTokenW を使い、
そこに渡す制限トークンはデスクトップのshellのものを使うだけと。
最初、自分が想像してたよりはかなり簡単だった。

ただ、shellからトークン取得するのはかなり行儀がわるそうなので、
きれいに実装するなら、ここはCreateRestrictedTokenを使うべきなのかもね。

479 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/28(火) 01:01:59
>>474
CreateRestrictedTokenで作ったトークンだといろいろ問題がある
デスクトップが標準ユーザーでも管理者ユーザーの制限されたトークンに
なってしまうとか
UACが制限されたトークンであることを認識できなくてさらに昇格したくなったとき
ダイアログを出してくれないとか
あと詳しく追求してないけどCOMサーバーとの通信でも何か問題が起きるらしい
23デフォルトの名無しさん:2007/08/29(水) 04:21:51

480 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/28(火) 01:02:36
アー二回も書いちまった

>>474
> ただ、shellからトークン取得するのはかなり行儀がわるそうなので、

モジラの場合はこれが正しいんじゃないかな
現在のユーザの「デスクトップ権限」が欲しいわけだし

482 名前:471[sage] 投稿日:2007/08/28(火) 01:15:30
>>479,480
指摘されてみれば確かにそのとおり。
別に正式とは関係なく、「firefoxでは」デスクトップの権限で動作するのが
正しいから現在のソースになってるってことね。
恥ずかしい。。。
24デフォルトの名無しさん:2007/08/29(水) 16:29:26
25デフォルトの名無しさん:2007/08/29(水) 20:00:15
26デフォルトの名無しさん:2007/08/30(木) 03:42:37
>>25
shellのウィンドウをFindWindow("Progman", NULL)で見つけるところは一緒だな
その後のアプローチがかなり違うけど