3

Windows 8のスタート画面の上にウィンドウを表示したいプログラムがあります。これを行う唯一の方法(私が知っている)では、マニフェストにフラグuiaccess=trueを設定する必要があります。ただし、それが機能するためには、プログラムのユーザーが管理者である必要があります。そこで、この方法を試して、プログラムと一緒にインストールしたサービスを取得して、メインプログラムを起動しました。このようにして、インストールされたユーザーは誰でもプログラムを実行できます。

問題はuiaccessフラグです。記事で説明されているようにプログラムを起動するには、uiaccessを使用する場合、サービス自体でuiaccessフラグを有効にする必要があるようです(そうでない場合、CreateProcessAsUserは失敗します)。また、uiaccessフラグを使用してサービスをインストールしようとすると、「このプロセスには昇格が必要です」というエラーが表示されます。

したがって、主な質問は次のとおりです。このフラグが有効になっているサービスをインストールする方法はありますか?私は答えが「いいえ」であることを期待していることを認めます。セッション0で実行されているサービスは、UIコンポーネントが許可されていないため、通常、このフラグを設定する理由はありません。しかし、私は自分が間違っていて、方法があることを望んでいます。

ありがとう、私が何かを片付ける必要があるかどうか私に知らせてください。

4

1 に答える 1

3

CreateProcessAsUser の前と DuplicateHandle の後では、関数 SetTokenInformation と TokenUIAccess 1 を使用します。

于 2013-01-19T15:51:38.620 に答える