Windows Vista UAC-Erhöhung anfordern, wenn der Pfad geschützt ist?
Für meine C# - app, ich will nicht immer Eingabeaufforderung für erhöhte Rechte auf Anwendung starten, aber wenn Sie wählen Sie eine Ausgabe-Pfad, ist UAC geschützt, dann muss ich verlangen Höhe.
So, wie kann ich überprüfen, ob ein Pfad ist UAC geschützt und dann wie beantrage ich die elevation mid-Ausführung?
InformationsquelleAutor der Frage sieben | 2008-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg, zu erkennen, wenn Sie nicht in der Lage sind, eine Aktion durchzuführen ist, um es zu versuchen und fangen die
UnauthorizedAccessException
.Aber wie @DannySmurf richtig Punkte aus Sie können nur erhöhen ein COM-Objekt oder separaten Prozess.
Gibt es eine Demo-Anwendung innerhalb der Windows-SDK-Cross-Technologie-Beispiele genannt UAC-Demo. Diese Demo-Anwendung zeigt eine Methode zum ausführen von Aktionen, die mit einem erhöhten Prozess. Es zeigt auch, wie Sie herausfinden, ob ein Benutzer gerade einen administrator.
InformationsquelleAutor der Antwort Adrian Clark
Anfordern elevation mid-Ausführung erfordert, dass Sie entweder:
In .NET, es gibt derzeit keine Möglichkeit zu erhöhen einen Laufenden Prozess; Sie müssen sich für eine der Hack Dinge vor, aber alles, was tut, ist geben Sie dem Benutzer den Anschein, dass der aktuelle Prozess wird erhöht.
Die einzige Möglichkeit die ich denken kann, um zu überprüfen, ob ein Pfad ist UAC erhöht ist, zu versuchen, tun einige triviale schreiben, während Sie in einem un-erhöhten Zustand, die Ausnahme abfangen, erhöhen und versuchen Sie es erneut.
InformationsquelleAutor der Antwort TheSmurf
Ich bin mir nicht sicher, ob es hilfreich für Sie, aber Sie können einen Blick auf diesen blog post:
http://haishibai.blogspot.com/2010/01/tiy-try-out-windows-7-uac-using-c-part_26.html
InformationsquelleAutor der Antwort mosu
Möchten Sie vielleicht, um den Benutzer Benachrichtigen, dass der Pfad ist geschützt und bitten Sie Sie, um die Ausgabe der Datei auf einem "sicheren" Bereich. So wird Ihre app nicht brauchen-Erhöhung. Ich bin sicher, es hängt davon ab, Ihre Benutzer und was Sie zu tun versuchen, aber ich glaube nicht, es ist zu viel, bitte lassen Sie die Benutzer wissen, dass Sie nicht das Gefühl, ok dumping xyz in das Windows/System32-Ordner.
InformationsquelleAutor der Antwort Brian Leahy
Wenn das sekundäre Laufwerk hat eine eigene Datei-Berechtigungen, wie sagen, Sie haben eine andere Kopie von windows auf es installiert. Es fordert.
Wird es auch prompt, ob Dateien in Verwendung sind, die manchmal Auftritt, wenn Sie windows explorer öffnen im gleichen Verzeichnis und die ausgewählte Datei mit einem Datei-Betrachter zeigt den Inhalt... es gibt einige andere Seltsamkeiten, aber in der Regel bekommen Sie aufgefordert, für die Datei die Berechtigung, wenn die Datei in Gebrauch ist, oder es ist eine sensible Verzeichnis.
Wenn Sie die do-Schleife wird der FolderBrowserDialog , stellen Sie sicher, um den Benutzer zu informieren, warum, damit Sie nicht wütend auf Ihre app.
Hinweis: es wird stinken, es gibt keine .net Weg, um Erlaubnis bitten, vielleicht von p/invoke die win32-api...?
InformationsquelleAutor der Antwort Brian Leahy
UAC zu erhöhen-Objekt basierend auf Ihrer GUID, das würde (theoretisch) bedeuten, dass jede Klasse mit einer GUID erhöht werden kann, Die UACDemo sollte auch zeigen, wie dies
InformationsquelleAutor der Antwort Tristan