1

基本的に、特権付きでインストールされたexeアプリがあります(ユーザーがVista/Win7 UACチェックで「許可」ボタンを押すなど)、アプリケーションが起動し、アプリケーションが自動的に再起動するように自動実行に設定しますコンピューターが再起動されると、もう一度(すべて昇格した状態で行われます)。自動起動はユーザーによって要求され、強制されません。

この再起動命令は、次のようにレジストリの CURRENT_USER セクションに設定されています。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

問題は、コンピューターの再起動時に、ユーザーが昇格したプロセスとして認証しない限り、Windows が実行を許可しないことです(つまり、タスクトレイにタスクバー アイコンが表示され、EXE/プロセスの開始が妨げられたことを示します。ユーザーは、タスクトレイのアイコンのメニューを使用して、ブロックされたアプリを起動することができます)。

私はマニフェスト ファイルを EXE に統合していることを付け加えたいと思います。そのため、その点では問題はなく、その意図を XML ファイルに正確に登録します。

Windows が設計上これを行うのはなぜですか? exeが一度承認された場合、それは永続的に承認されることを意味するべきではありませんか?

しかし、私が聞きたい主な質問は、どうすればこれを回避できるかということです。アプリケーションの自動実行が必要になるたびに、ユーザーがこれを行わなければならないことを想像してみてください。

また、「そもそもアプリを昇格モードで実行するべきではない」という議論/議論、または「アプリに昇格された特権は必要ないので、書き直す必要がある」という議論全体を避けたいと思います。私のアプリには昇格された権限が必要であることを保証できます (残念ながら)。興味がある場合は、以下に詳細を示します。この投稿の質問を解釈または理解する必要はありませんが、質問する人がいることがわかっているため含まれています)...

追加の不要な読書:

...実際、すべての起動の 87% で必要であり (ユーザーの操作によって異なります)、13% の場合は不要でした (つまり、ユーザーの 13% ではなく、すべての起動インスタンスの 13% です)。 )、私はそれのみが最初に起動される2番目のexeを開発しています。昇格された機能が必要/要求されると、昇格された部分がロードされ、UACナグで面倒な人々からのすべての起動の13%を節約します。 2013. アプリケーションの別の領域に論理的に属さない関数を分割するために、このすべての作業を行っています。このすべての作業を行っても、上記の問題は解決されません (むしろ、非常にわずかに最小化または延期)。

4

3 に答える 3

3

これがプログラミング言語でタグ付けされた理由はわかりません。実際には ServerFault の質問であるため、私が知る限り、ここに属していません。

ただし、これを処理する通常の方法は、最高の特権で実行オプションを使用して、タスク スケジューラを使用することです。関連するプロセスの公開された説明がいくつかあります。たとえば、Make Vista launch UAC limited programs at startup with Task Schedulerの古いものです。

于 2012-07-09T00:54:58.277 に答える
2

なぜWindowsはこれを設計上行うのですか?exeが一度承認された場合、それは永続的に承認されていることを意味するのではありませんか?

それは意見の問題ですが、ここに私のものがあります。昨日VisualStudioを昇格して実行する必要があったのはDLLをzippy32にしたかったからですが、それは、今日、別のアプリで昇格して実行したいということを証明するものではありません。

しかし、私が聞きたい主な質問は、どうすればこれを回避できるかということです。

私はサービスを利用します。プログラミングは簡単ではありませんが、それが私が昇格したプロセスを自動実行する方法です。

于 2012-07-09T00:32:11.347 に答える
1

ユーザーに UAC をオフにするように依頼するか、既に述べたように、昇格が必要なポイントで昇格するようにアプリケーションを再設計するか、システム アカウントでサービスを実行して昇格が必要なことを実行させます。

于 2012-07-09T00:28:27.393 に答える