2011-10-24 9 views
6

私のアプリケーションに大きな問題が1つあります。私は別のexeファイルとして&アップデータを持っています。アップデートが利用可能になると、アップデータはアップデートを行い、プロセスの完了時には自分のアプリを起動します。主な問題は - アプリはプログラムファイルフォルダにインストールされているので、アップデーターにはUACの管理者権限が必要ですが、それは正常ですが、私のアプリを実行する必要があるときは、通常のユーザーとして実行する必要があります。ドロップは機能しません(アプリケーションの問題ではなく、UACがブロックします)。私はいくつかの異なるソリューションを試しましたが、さらにこれを試しました。 How to run NOT elevated in Vista (.NET)UACの管理者レベルのプロセスから低レベルの権限でプロセスを開始する

私のアプリは管理者として実行されています。

答えて

9

昇格していないプロセスを昇格したプロセスから開始しないようにしてください。トリッキーな部分でエラーが発生しやすいです。

このアプローチは、より良いです:

  1. あなたのアップデータは、最初は非高架アプリケーションとして起動し、そのマニフェストはasInvokerレベルを持っています。
  2. 起動すると、runas動詞を使用して昇格された特権で自身を再起動し、それを示すコマンドラインパラメータを渡します。このインスタンスは更新を実行して戻ります。
  3. ここで再び非上昇アップデータを来て、ステップ1

非常にシンプルかつ堅牢にアップデータの最初のインスタンスを開始したのと同じ非上昇ユーザートークンを使用してアプリケーションを起動します。

+0

+1を想定します。この答えの最初の行は非常に重要です。私はあなたが試みた技術にかかわらず、(偽装するために非昇格したトークンを取得する)ことは悪い考えであると言った記事を読んだことがあります。 Vistaが最初に出てきたときに私がそれを読んで以来、その記事やその記事を見つける場所がわからない。別のオプションがこの質問に与えられます:http://stackoverflow.com/questions/1173630/how-do-you-de-elevate-privileges-for-a-child-process –

+0

私はそれを試してみます、あなたのためにありがとう回答。 :) – n1tr0

+0

このようにしました - 魅力のように動作します!多くのおかげで私の友人! ;) – n1tr0

関連する問題