私たちはx86 Win32デスクトップアプリケーションを持っています。インストーラが標準(管理者以外の)ユーザーによって実行されている場合は、昇格やUACプロンプトの表示を避けて、Program Files
ディレクトリの代わりにC:\Users\username\AppData\Roaming\...
の下にインストールします。標準Windows 10ユーザーのアンインストーラ昇格を防止するにはどうすればよいですか?
Windows 10では、アンインストーラをControl Panel -> Programs -> Programs and Features
から起動すると、UACプロンプトが表示されず、アンインストーラが昇格せずに実行されます。これが望ましい動作です。 Start -> Settings -> System -> Apps & features
から同じアンインストーラを起動すると、UACプロンプトが表示されます。
(同じ動作がオペラブラウザのインストーラ/アンインストーラで見ることができます。私はv35.0.2066.37をテストしました。)Programs and Features
対Apps & features
から起動したときに
なぜ同じアンインストーラの動作が異なるのでしょうか?
Apps &の機能からアンインストーラを起動すると、UACプロンプトはどのようにして回避できますか?
私たちのアンインストーラのマニフェストには、これを含まれています:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" />
</requestedPrivileges>
</security>
</trustInfo>
私はrequestedExecutionLevel
を変更しようとした、とも完全にtrustInfo
を削除しようとしたが、行動のいずれかの方法には変化がなかったです。
Windows 10バージョン1511ビルド10586.104でテスト済みです。
編集:だけ明確にするユーザーは、標準のアカウントを持っており、管理者アカウントのパスワードを知らない場合、私が処理しようとしているケースがあります。アンインストールを試みるときにUACプロンプトが表示された場合、アンインストールをキャンセルするしかありません。アンインストーラは実行されません。
私は今朝、この「機能」を扱っていました。私たちのために働いた唯一のアプローチは、アンインストーラを現在のユーザーとして再起動させることでした。エクスプローラを使用して実行可能ファイルを再起動する方法の説明は次のとおりです。 http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you -part-2-方法/ 私たちは、NSISを使用するので、私たちは最初のリンクに基づいていますShellExecAsUserプラグイン、利用することができました: http://nsis.sourceforge.net/ShellExecAsUser_plug-in –
Iをこれが主な問題に対処していないとしますが、HKCUとLocalAppDataにアクセスする必要があるため、アンインストールが失敗した場合、アンインストールが失敗する懸念があります。これは高度の防止の問題には対処していませんが、ChromeのCurrentUserインストール(Operaの注意したように)でもAppsと機能からアンインストールしたときにWindows 10で同じ高さの問題が発生するため、現在のユーザーとして昇格したかどうかにかかわらず実行されます。 –