こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「管理者として実行」された場合の一時的な降格方法

Administrator以外のユーザでログオンし、
プログラムを右クリックして、「管理者として実行」した場合に、
問題があります。(Windows Vista,7/UAC ON環境下)

プログラム内で「subst」を行い、仮想ドライブを
作成しているのですが、「管理者として実行」を行った場合、
作られた仮想ドライブに、ログオンユーザからアクセスできず、
エクスプローラからも見れません。
(コマンドプロンプトを右クリックで「管理者として実行」で起動し、
 substコマンドを実行しても再現できます)

プログラム内で、substを行う前に、ログオンユーザとして
実行したものと偽装し、substを行うこと、または、
そもそも、「管理者として実行」を行えないようにする
手段はあるのでしょうか?

投稿日時 - 2010-02-05 12:25:49

QNo.5650863

すぐに回答ほしいです

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

そうでっか
じゃ
これ参考になるかな?

下に下に
http://dev.activebasic.com/egtra/?p=166

SetTokenInformation
で・・・

投稿日時 - 2010-02-09 23:58:52

お礼

リンク先がアクセスできませんでした。。。

FireFoxのソースに参考になるものがあったので、
CreateProcessWithTokenWで、substを実行するように
したらうまくいきました。
http://mxr.mozilla.org/firefox/source/toolkit/xre/nsWindowsRestart.cpp

投稿日時 - 2010-02-10 13:52:11

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

制限つきトークンを使えば出来るかな?

CreateRestrictedToken

LUA_TOKEN
で試してみてください

Googleで検索してね

投稿日時 - 2010-02-06 19:48:27

補足

回答ありがとうございます。

OpenProcessToken→
CreateRestrictedToken→
ImpersonateLoggedOnUser→
ShellExecute→
RevertToSelf

という流れで、プログラムを組んでみましたが、
うまく行きませんでした。
(LUA_TOKENがどのheaderに定義されているのか不明だったので
0x4としてコーディングしましたが)

投稿日時 - 2010-02-08 10:27:43

あなたにオススメの質問