基本的に、特権付きでインストールされた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. アプリケーションの別の領域に論理的に属さない関数を分割するために、このすべての作業を行っています。このすべての作業を行っても、上記の問題は解決されません (むしろ、非常にわずかに最小化または延期)。