2016-02-17 18 views
8

Wir haben eine x86 Win32 Desktop-Anwendung. Wenn das Installationsprogramm von einem Standardbenutzer (Nicht-Administrator) ausgeführt wird, vermeiden wir es, eine UAC-Eingabeaufforderung zu erhöhen und/oder anzuzeigen, und installieren Sie unter C:\Users\username\AppData\Roaming\... anstelle des allgemeinen Verzeichnisses Program Files.Wie kann verhindert werden, dass das Deinstallationsprogramm für Windows 10 Benutzer ansteigt?

Wenn unter Windows 10 unser Deinstallationsprogramm von Control Panel -> Programs -> Programs and Features gestartet wird, wird keine UAC-Eingabeaufforderung angezeigt und das Deinstallationsprogramm wird ohne Erhöhung ausgeführt. Dies ist das gewünschte Verhalten. Wenn dasselbe Deinstallationsprogramm von Start -> Settings -> System -> Apps & features gestartet wird, wird eine UAC-Eingabeaufforderung angezeigt.

(Das gleiche Verhalten kann in dem Opera-Browser Installations-/Deinstallationsprogramm zu sehen. Ich testete v35.0.2066.37.)

Warum anders das gleiche Uninstaller verhält, wenn sie von Apps & features gegen Programs and Features ins Leben gerufen?

Wie kann die UAC-Eingabeaufforderung vermieden werden, wenn das Deinstallationsprogramm von Apps & Funktionen gestartet wird?

Das Manifest unserer Deinstallationsprogramm beinhaltet dies:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" /> 
     </requestedPrivileges> 
    </security> 
</trustInfo> 

ich die requestedExecutionLevel versucht zu ändern, und versuchte auch trustInfo vollständig zu entfernen, aber es gab keine Veränderung im Verhalten oder so.

Getestet unter Windows 10 Version 1511 Build 10586.104.

Bearbeiten: Nur um zu klären, der Fall, den ich versuche zu behandeln ist, wo der Benutzer einen Standard-Account hat und nicht das Passwort eines Admin-Kontos kennt. Wenn sie eine UAC-Eingabeaufforderung sehen, wenn sie versuchen, sie zu deinstallieren, haben sie keine andere Wahl als sie abzubrechen, und unser Deinstallationsprogramm wird nicht ausgeführt.

+0

Ich habe gerade den Morgen mit diesem "Feature" verbracht. Der einzige Ansatz, der für uns funktionierte, bestand darin, das Deinstallationsprogramm als aktuellen Benutzer neu zu starten. Hier ist eine Beschreibung des Ansatzes, der Explorer verwendet, um die ausführbare Datei neu zu starten: http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you -Teil-2-how/ wir verwenden NSIS, so konnten wir die ShellExecAsUser Plug-in, verwenden, die auf dem ersten Link basiert: http://nsis.sourceforge.net/ShellExecAsUser_plug-in –

+0

I Nehmen wir an, dass dies nicht das primäre Problem angeht, aber für uns besteht die Sorge, dass die Deinstallation fehlschlägt, wenn sie auf erhöhte Ebene ausgeführt wird, da sie auf HKCU und LocalAppData zugreifen muss.Das Problem der Höhenverhinderung wird dadurch nicht behoben, aber selbst eine CurrentUser-Installation von Chrome (und wie Sie bereits bemerkt haben, Opera) leidet unter dem gleichen Problem mit der Höhenangabe von Windows 10 bei der Deinstallation von Apps und Funktionen. Daher reicht es aus, dies nicht zu tun scheitern und als aktueller Benutzer ausgeführt werden, unabhängig davon, ob er auf Hoch gesetzt ist oder nicht. –

Antwort

3

Dies ist ein Fehler in "Apps & Funktionen", soweit ich weiß. Die WiX-Leute haben closed this issue als Windows-Bug und ich nehme an, sie haben die richtigen Leute @ Microsoft benachrichtigt. Das Verhalten ist in Insider build 15042 immer noch dasselbe, so dass es wahrscheinlich nicht rechtzeitig für das Creators Update repariert wird.

Es gibt keine Problemumgehung, die Sie verwenden können, wenn der Standardbenutzer nicht erhöhen kann.

Wenn sie erhöhen können, dann können Sie die re-spawn workaround in den Kommentaren geschrieben oder manuell laden Sie das Benutzerprofil und rufen Sie RegOverridePredefKey, aber sie sind beide hässliche Hacks (IMHO).

+0

Sie haben mir gerade eine lächerliche Menge an Debugging erspart, danke. – johnwbyrd