2012-03-31 6 views
4

Wenn Sie eine Datei in Windows Explorer (Windows 7) zu löschen, werden, wenn Admin-Rechten, die Datei löschen erforderlich, wird dieser Dialog angezeigt:Wie Implementieren benutzerdefinierter Benutzerkontensteuerung UI?

enter image description here

eine Möglichkeit, diese Art der Wirkung Gibt es zu erreichen in meinem App?

Derzeit einen Prozess ‚als Administrator‘ Ich bin starte die gleiche Art von Aktion auszuführen (eine Datei zu ersetzen, anstatt sie zu löschen), so dass der Benutzer des allgemeinen UAC-Dialog angezeigt wird, zu fragen:

„Do Sie möchten, dass das folgende Programm Änderungen an diesem Computer vornimmt? "

Ist die hilfreiche Benutzeroberfläche, die Explorer (im Gegensatz zum allgemeinen UAC-Dialog) anzeigt, in einer Drittanbieter-App möglich?

Ich vermute nein, da es Drittparteien erlauben würde, Privilegien auf eine hinterhältige Art zu erhöhen.

Antwort

2

Die Standardeinstellung für Windows 7 ist, dass die meisten Systemkomponenten den UAC-Dialog nicht anzeigen.

Wenn Sie Ihre Einstellung so ändern, dass immer eine Eingabeaufforderung angezeigt wird, sehen Sie, dass das Klicken auf Weiter im Explorer-Dialogfeld die normale UAC-Eingabeaufforderung erzeugt.

Als Nicht-System binär, würde den Code immer auffordern, außer an der mildesten UAC-Einstellung (nie auffordern.)

+0

Ja, das stimmt: Sie können die Schaltfläche für die Erhebung anzeigen (Continue in diesem Fall) in jeder beliebigen UI anzeigen, aber der Elevation-Prozess zeigt immer die Systembestätigung, unabhängig davon, ob Sie einen neuen Prozess starten oder einen erhöhten erstellen COM-Objekt –

4

Verwenden Button_SetElevationRequiredState die Abschirmung mit der Schaltfläche hinzuzufügen. Wenn der Benutzer die Schaltfläche use the COM elevation moniker drückt, um das Hilfsobjekt zu erstellen.

+0

Danke für den Zeiger auf die Einstellung des Schild-Symbols. Ich habe SendMessage verwendet, weil ich nicht die richtigen #defines hatte, um diese Funktion/dieses Makro zu verwenden (und ich wollte nicht mit #define_Win32 herumspielen). – mackenir

+0

Ich kann COM nicht benutzen, also mache ich nur eine Kopie der EXE als Admin, mit einigen speziellen Cmdline-Optionen, die es anweisen, 'die Admin-Sachen zu machen'. – mackenir

+0

Das Schildsymbol ist nur eine Warnung für den Benutzer, dass "wenn Sie diesen Knopf drücken, jemand Sie um Erlaubnis bitten wird zu erhöhen, also seien Sie nicht überrascht." Eine Möglichkeit, um die Berechtigung zur Erhöhung zu bitten, ist die Verwendung von COM, aber die Befehlszeile funktioniert auch. –

Verwandte Themen