PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Windows UAC-Abfrage bei eigenem Programm?


aths
2013-10-01, 16:24:21
Ich habe ein Programm geschrieben das ich vielleicht zum Download anbieten möchte. Doch wenn ich es auf einen anderen Rechner kopiere und dort ein Windows mit UAC-Standardsettings läuft, fragt er jedes mal, ob das Tool starten soll.

Kann man das irgendwie umgehen? Der Dialog bietet leider nicht die Option, in Zukunft nicht mehr zu fragen.

PatkIllA
2013-10-01, 16:31:12
Da gibt es ein eingebettes Manifest, wo das drinsteht
http://msdn.microsoft.com/en-us/library/bb756929.aspx
wenn es keins gibt rät Windows.

Ectoplasma
2013-10-01, 16:36:23
Erst einmal die Frage, warum dein Tool überhaupt Admin-Rechte braucht? Ansonsten schau mal hier (http://www.tobbis-blog.de/uac-unter-windows-7-deaktivieren/). Wenn man das nun doch nicht abschalten möchte, was machst du dann?

PatkIllA
2013-10-01, 16:50:33
Erst einmal die Frage, warum dein Tool überhaupt Admin-Rechte braucht?Das Tool kann auch Adminrechte anfordern, auch wenn es nichts macht, was welche erfordert.
Die Abfrage hat erstmal nichts damit zu tun was das Programm macht. Falls zur Laufzeit Rechte fehlen fällt es halt auf die Nase.

Ectoplasma
2013-10-01, 17:33:39
Das Tool kann auch Adminrechte anfordern, auch wenn es nichts macht, was welche erfordert.
Die Abfrage hat erstmal nichts damit zu tun was das Programm macht. Falls zur Laufzeit Rechte fehlen fällt es halt auf die Nase.

Ah ok. Ich hatte Aths so verstanden, dass er genau das nicht wollte. Du meinst also, dass die Entwicklungsumgebung ein Manifest eingebunden hat, welches genau diesen UAC-Dialog auslöst?

PatkIllA
2013-10-01, 17:37:11
Ah ok. Ich hatte Aths so verstanden, dass er genau das nicht wollte. Du meinst also, dass die Entwicklungsumgebung ein Manifest eingebunden hat, welches genau diesen UAC-Dialog auslöst?
Oder halt eben nichts einbindet. Dann versucht Windows zu raten bzw hat eine Datenbank mit bekannten Programmen.
Man kann das auch mit sog. Shims überschreiben.

Dass bei ihm keine Abfrage kommt, kann auch daran liegen, dass die Entwicklungsumgebung schon mit Adminrechten läuft.

Exxtreme
2013-10-01, 21:22:24
Erst einmal die Frage, warum dein Tool überhaupt Admin-Rechte braucht? Ansonsten schau mal hier (http://www.tobbis-blog.de/uac-unter-windows-7-deaktivieren/). Wenn man das nun doch nicht abschalten möchte, was machst du dann?
Wenn Windows nicht weiss was ein Programm macht dann kommt die Abfrage, da reicht ein simples Hello world-Programm. Passiert meistens dann wenn man Programme mit älteren Entwicklungswerkzeugen entwickelt hat, deren Compiler nix von UAC wissen.

Monger
2013-10-01, 22:37:46
Abgesehen vom Manifest gibt es auch ein paar andere Auslöser, die ein Programm in den elevierten Modus zwingen können - zum Beispiel wenn das Programm "Setup" oder "Install" im Namen trägt.

Gast
2013-10-02, 00:27:29
Wenn Windows nicht weiss was ein Programm macht dann kommt die Abfrage, da reicht ein simples Hello world-Programm. Passiert meistens dann wenn man Programme mit älteren Entwicklungswerkzeugen entwickelt hat, deren Compiler nix von UAC wissen.

Ich habe noch nie erlebt, dass ältere Entwicklungsumgebungen dafür die Ursache sein könnten. Warum sollten sie auch, gerade weil ältere Entwicklungsumgebungen gar kein Minifest kennen. Da passiert dann nämlich gar nichts, wenn ein Programm nicht gerade eine Funktionen ausführt, die Admin-Rechte benötigen. Also ein "Hello World" geht immer durch, ohne UAC-Dialog. Aber wer weiss, vielleicht gab es dieses Problem noch unter Vista. Unter Windows 7, ist das mit Sicherheit nicht so.

PatkIllA
2013-10-02, 08:09:52
Ich habe noch nie erlebt, dass ältere Entwicklungsumgebungen dafür die Ursache sein könnten. Warum sollten sie auch, gerade weil ältere Entwicklungsumgebungen gar kein Minifest kennen.Weil Windows dann anfängt zu raten. (Unter anderem nach dem Dateiname)
Da passiert dann nämlich gar nichts, wenn ein Programm nicht gerade eine Funktionen ausführt, die Admin-Rechte benötigen.Was das Programm wirklich macht ist vollkommen irrelevant.
Aber wer weiss, vielleicht gab es dieses Problem noch unter Vista. Unter Windows 7, ist das mit Sicherheit nicht so.Die Anzahl der Programme ohne Manifest hat deutlich abgenommen und außerdem ist die Datenbank mit Kompatibilitätseinstellungenn mit der Zeit auch immer mehr gewachsen. Deshalb sind Fehlalarme selten.
Außerdem laufen Programme, die eigentlich Adminrechte benötigen, weil sie im Programmverzeichnis oder im allgemeinen Teil der Registry schreiben durch den VirtualStore nicht mehr in Fehler.

Ectoplasma
2013-10-02, 09:21:52
@PatkIllA, ist Windows an dieser Stelle wirklich so beschissen implementiert? Kann ich mir gar nicht vorstellen, aber auf der anderen Seite wäre das auch typisch für Microsoft.

PatkIllA
2013-10-02, 09:23:51
@PatkIllA, ist Windows an dieser Stelle wirklich so beschissen implementiert? Kann ich mir gar nicht vorstellen, aber auf der anderen Seite wäre das auch typisch für Microsoft.
Was ist denn daran schlecht?
Wenn man es ordentlich macht laufen jede Menge alter Programme nicht mehr.
Man kann das auch selbst (bzw der Admin) für einzelne Programme überschreiben.

aths
2013-10-02, 09:27:53
Da gibt es ein eingebettes Manifest, wo das drinsteht
http://msdn.microsoft.com/en-us/library/bb756929.aspx
wenn es keins gibt rät Windows.
Mir ist nicht ganz klar, wie das funktionieren soll.

- Kann man via Manifest die UAC-Abfrage ausschalten und mit Admin-Rechten laufen, sofern der User der das Programm startet, Admin ist?
- Kann man wenigstens beim Anfordern von Admin-Rechten die Abfrage so gestalten dass Windows via Checkbox anbietet, in Zukunft weitere UAC-Abfragen zu unterlassen?
- Kann das Programm selbst Admin-Rechte anfordern? Mein Tool muss derzeit mit Verknüpfung und Option "Als Administrator ausführen" gestartet werden, damit es überhaupt funktioniert. Verdammte 325-Treiber!

PatkIllA
2013-10-02, 09:34:30
- Kann man via Manifest die UAC-Abfrage ausschalten und mit Admin-Rechten laufen, sofern der User der das Programm startet, Admin ist?Auch wenn ein User Admin ist läuft ein Programm noch nicht mit vollen Adminrechten. Es sei denn der Prozess der das startet läuft ebenfalls schon mit Adminrechten.
Du hast drei Möglichkeiten.
AsInvokder: Das Programm läuft mit normalen Benutzerrechten
highestAvailable: Wenn der Benutzer Admin ist, dann wird nach UAC-Abfrage mit vollen Adminrechten gestartet. Ist der Benutzer kein Admin läuft es mit normalen Rechten.
requireAdministrator: Das Programm erfordert eine UAC-Bestätigung oder die Anmeldedaten eines Administrators und läuft dann mit Adminrechten.
- Kann man wenigstens beim Anfordern von Admin-Rechten die Abfrage so gestalten dass Windows via Checkbox anbietet, in Zukunft weitere UAC-Abfragen zu unterlassen?Nein
- Kann das Programm selbst Admin-Rechte anfordern? Mein Tool muss derzeit mit Verknüpfung und Option "Als Administrator ausführen" gestartet werden, damit es überhaupt funktioniert. Verdammte 325-Treiber!Das wäre dann ein Fall für requireAdministrator. Oder du gehst auf highestAvailable, dann kann ein normaler Benutzer evtl nur gucken, falls lesen ohne Adminrechte geht (die Computerverwaltung macht das z.B. so)

aths
2013-10-02, 10:34:56
Auch wenn ein User Admin ist läuft ein Programm noch nicht mit vollen Adminrechten. Es sei denn der Prozess der das startet läuft ebenfalls schon mit Adminrechten.
Du hast drei Möglichkeiten.
AsInvokder: Das Programm läuft mit normalen Benutzerrechten
highestAvailable: Wenn der Benutzer Admin ist, dann wird nach UAC-Abfrage mit vollen Adminrechten gestartet. Ist der Benutzer kein Admin läuft es mit normalen Rechten.
requireAdministrator: Das Programm erfordert eine UAC-Bestätigung oder die Anmeldedaten eines Administrators und läuft dann mit Adminrechten.
requireAdministrator: Heißt das, wenn der User bereits Admin ist, kommt mit keine UAC-Aufforderung?

Nein
Das wäre dann ein Fall für requireAdministrator. Oder du gehst auf highestAvailable, dann kann ein normaler Benutzer evtl nur gucken, falls lesen ohne Adminrechte geht (die Computerverwaltung macht das z.B. so)Auf dem Rechner auf dem ich das Tool programmiere fragt er nicht, obwohl ich das UAC-Level auf Standard zurückgesetzt habe. Welchen Grund hat das?

Gast
2013-10-02, 11:12:30
Kopier deine EXE in ein ZIP-Archiv oder ähnliches sonst speichert Windows in der EXE-Datei ab das es aus dem Internet kommt und deshalb kommt die Abfrage.

Monger
2013-10-02, 11:34:34
Kopier deine EXE in ein ZIP-Archiv oder ähnliches sonst speichert Windows in der EXE-Datei ab das es aus dem Internet kommt und deshalb kommt die Abfrage.
Das ist die Internet Sicherheitszone, die hat nix mit UAC zu tun. Aber ja: je nachdem wie man deployed, kann das Ärger verursachen.

PatkIllA
2013-10-02, 11:38:26
requireAdministrator: Heißt das, wenn der User bereits Admin ist, kommt mit keine UAC-Aufforderung?Du musst immer unterscheiden zwischen ob jemand Admin ist und ob das programm auch wirklich mit Adminrechten läuft.
Wenn der Prozess aus dem das gestartet wird schon mit Adminrechten läuft, dann kommt keine Abfrage.
Ist das nicht der Fall kommt die Abfrage.

Auf dem Rechner auf dem ich das Tool programmiere fragt er nicht, obwohl ich das UAC-Level auf Standard zurückgesetzt habe. Welchen Grund hat das?Startest du aus der Entwicklungsumgebung heraus und läuft die mit Adminrechten?

aths
2013-10-02, 13:31:43
Du musst immer unterscheiden zwischen ob jemand Admin ist und ob das programm auch wirklich mit Adminrechten läuft.
Wenn der Prozess aus dem das gestartet wird schon mit Adminrechten läuft, dann kommt keine Abfrage.
Ist das nicht der Fall kommt die Abfrage.Das Programm wird ganz normal vom User gestartet. Aber auch wenn er Adminrechte hat, hat das Programm keine. Es sei denn, man erstellt eine Verknüpfung und geht dort in die Eigenschaften und markiert die Box, die Anwendung als Admin zu starten. Dann kommt auf dem Test-PC (im Gegensatz zum Entwicklungs-PC) immer eine Abfrage bei Standard-UAC-Level in der Systemsteuerung. Ohne Möglichkeit, per Checkbox zukünftige Starts zu erlauben.

Startest du aus der Entwicklungsumgebung heraus und läuft die mit Adminrechten?Sowohl aus der IDE heraus, als auch beim Start der Exe-Datei im Explorer gibt es auf dem PC auf dem ich entwickle keine Abfrage.

PatkIllA
2013-10-02, 13:39:17
Das Programm wird ganz normal vom User gestartet. Aber auch wenn er Adminrechte hat, hat das Programm keine.Das ist ganz normal und so gewollt, wenn asInvoker eingetragen ist oder in den meisten Fällen ohne Manifest.
Es sei denn, man erstellt eine Verknüpfung und geht dort in die Eigenschaften und markiert die Box, die Anwendung als Admin zu starten. Dann kommt auf dem Test-PC (im Gegensatz zum Entwicklungs-PC) immer eine Abfrage bei Standard-UAC-Level in der Systemsteuerung.Das ist ganz normal. Auf Standard ab Win7 werden einge Windowseigenen Dinge ausgenommen
Ohne Möglichkeit, per Checkbox zukünftige Starts zu erlauben.Die gibt es auch nirgends.
Sowohl aus der IDE heraus, als auch beim Start der Exe-Datei im Explorer gibt es auf dem PC auf dem ich entwickle keine Abfrage.Dann hast du auf dem EntwicklungsPC was verstellt.

MooN
2013-10-02, 15:41:34
Dann hast du auf dem EntwicklungsPC was verstellt.

Oder seine explorer.exe läuft mit Admintoken, was z.B. bei Nutzung der lokalen Administratorkennung passiert.

PatkIllA
2013-10-02, 15:44:58
Oder seine explorer.exe läuft mit Admintoken, was z.B. bei Nutzung der lokalen Administratorkennung passiert.
Das gehört zu verstellt.
Ich hatte es auch schon mal, dass ein Installer die explorer.exe beendet hat, um sich dort zu integrieren. Die explorer.exe wurde dann vom Installer mit Adminrechten gestartet.

Bei einigen Tools steht auch Administrator in der Titelleiste, wenn es mit Adminrechten läuft.
Z.B. der Eingabeaufforderung, VisualStudio oder Notepad++

aths
2013-10-02, 16:12:25
Das ist ganz normal und so gewollt, wenn asInvoker eingetragen ist oder in den meisten Fällen ohne Manifest.
Das ist ganz normal. Auf Standard ab Win7 werden einge Windowseigenen Dinge ausgenommen
Die gibt es auch nirgends.Wenn man einige aus dem Internet heruntergeladenen Installationsprogramme startet, kann man auswählen, die Abfrage für dieses Programm in Zukunft zu überspringen.


Dann hast du auf dem EntwicklungsPC was verstellt.Zumindest UAC ist auf Normallevel (zweites von oben) gesetzt, gerade noch mal überprüft.

Was mir noch nicht klar ist: Kann man im Prinzip eine Anwendung programmieren die Admin-Rechte braucht, aber nicht jedes mal vom User bestätigt werden muss?

Monger
2013-10-02, 16:48:24
Wenn man einige aus dem Internet heruntergeladenen Installationsprogramme startet, kann man auswählen, die Abfrage für dieses Programm in Zukunft zu überspringen.

Das ist NICHT der UAC, sondern die Internet Sicherheitszone. Das ist eine NTFS Eigenschaft die an der Datei hängt. Reden wir hier wirklich über UAC?


Was mir noch nicht klar ist: Kann man im Prinzip eine Anwendung programmieren die Admin-Rechte braucht, aber nicht jedes mal vom User bestätigt werden muss?
Der Stein des Anstoßes muss immer vom Anwender kommen. Wenn du als Anwender einen Prozess im elevierten Modus startest, dann sind alle Prozesse die dieser Prozess startet selber auch eleviert. In aller Regel läuft das also so: wenn ein Programm unter normalen Benutzerrechten läuft, und es will irgendwas machen was zwingend administrative Rechte erfordert, dann stößt es einen Prozess an mit Manifest "Requires Adminstrator", der Benutzer wird gefragt, der Prozess tut was immer notwendig ist, inklusive Kindprozesse ausführen, und beendet sich.

Die Radikalvariante ist natürlich: du startest gleich dein Hauptprogramm als Admin, dann darf das buchstäblich alles. Aber selbstverständlich ist das nicht der Sinn der Sache.

Ectoplasma
2013-10-02, 17:31:48
Ich habe mal eine ernsthafte Frage und zwar, ob ich UAC unter Windows wirklich verstanden habe? Ich weiß nicht wirklich wie MS das implementiert hat, aber ich Frage mich die ganze Zeit, was der Manifest-Eintrag soll. Dieser kann doch nur die Eigenschaft mitbringen, dass das System schon vorher weiss, das eine bestimmte EXE, Admin-Rechte benötigen wird. Wenn eine EXE diesen Manifest-Eintrag nicht besitzt, warum zum Henker sollte Windows dann raten? Falls diese EXE eine Admin-Funktion ausführen sollte und diese EXE aber vorher keine Admin-Rechte besaß, sollte doch dann erst der UAC-Dialog kommen. Oder ist es doch anders? Kommt dann vielleicht doch nur ein Access-Denied und der Prozess ist beendet, oder wie läuft das? Wenn ein Prozess nie eine Admin-Funktion ausführen wird, sollte es doch ohne UAC-Dialog ganz normal laufen. Ich verstehe nicht, was es da für das OS zu raten gäbe.

PatkIllA
2013-10-02, 17:41:15
Ich habe mal eine ernsthafte Frage und zwar, ob ich UAC unter Windows wirklich verstanden habe? Ich weiß nicht wirklich wie MS das implementiert hat, aber ich Frage mich die ganze Zeit, was der Manifest-Eintrag soll. Dieser kann doch nur die Eigenschaft mitbringen, dass das System schon vorher weiss, das eine bestimmte EXE, Admin-Rechte benötigen wird.
Das stimmt. Das Level muss schon beim Start festgelegt werden.
Wenn eine EXE diesen Manifest-Eintrag nicht besitzt, warum zum Henker sollte Windows dann raten?
Damit es bei den Altanwendungen nicht auf die Nase fällt. Wenn es erkennt, dass es ein Installer ist, dann läßt es das halt nicht auf die Nase fallen, sondern fragt gleich nach Adminrechten. Oder fast genauso schlimm: Es passieren seltsame Dinge durch die Ordner oder Registry-Virtualisierung.
Falls diese EXE eine Admin-Funktion ausführen sollte und diese EXE aber vorher keine Admin-Rechte besaß, sollte doch dann erst der UAC-Dialog kommen.
Das im laufenden Programm zu erhöhen dürfte kaum ordentlich umzusetzen sein. Da muss dann auch mit tausend Nebenwirkungen kämpfen, wenn mittendrin das Programm angehalten wird (Fullscreen, Multithreading usw.)
Wenn ein Prozess nie eine Admin-Funktion ausführen wird, sollte es doch ohne UAC-Dialog ganz normal laufen. Ich verstehe nicht, was es da für das OS zu raten gäbe.Tut es doch auch. Die Anwendungen ohne Manifest laufen in der Regel mit Standardrechten, aber mit Programmordner- und Registry-Virtualisierung. Es gibt da eine Heuristik und eine Datenbank an der Windows das festzustellen versucht. Außerdem kann ein Admin auch das Manifest bewusst überschreiben.

Ectoplasma
2013-10-02, 18:31:12
@PatkIllA, ok danke. Das zentrale Mißverständnis meinserseits war, dass ich davon ausging, dass die Elevation auch während der Prozessausführung möglich sei. Dass das natürlich einige Schwierigkeiten mit sich bringt, ist mir aber durchaus bewußt.

aths
2013-10-03, 09:17:07
Das ist NICHT der UAC, sondern die Internet Sicherheitszone. Das ist eine NTFS Eigenschaft die an der Datei hängt. Reden wir hier wirklich über UAC?Ja, ich dachte die Installer-Sache wäre auch vom UAC gesteuert. Worum es mir geht, ist natürlich der UAC-Dialog wegen Adminrechten.

Der Stein des Anstoßes muss immer vom Anwender kommen. Wenn du als Anwender einen Prozess im elevierten Modus startest, dann sind alle Prozesse die dieser Prozess startet selber auch eleviert. In aller Regel läuft das also so: wenn ein Programm unter normalen Benutzerrechten läuft, und es will irgendwas machen was zwingend administrative Rechte erfordert, dann stößt es einen Prozess an mit Manifest "Requires Adminstrator", der Benutzer wird gefragt, der Prozess tut was immer notwendig ist, inklusive Kindprozesse ausführen, und beendet sich.

Die Radikalvariante ist natürlich: du startest gleich dein Hauptprogramm als Admin, dann darf das buchstäblich alles. Aber selbstverständlich ist das nicht der Sinn der Sache.Noch immer ist mir eines nicht klar: Kann man per Manifest verhindern, dass Windows jedes mal fragt, wenn mein Programm via Verknüpfung mit Adminrechten läuft?

PatkIllA
2013-10-03, 09:24:04
Noch immer ist mir eines nicht klar: Kann man per Manifest verhindern, dass Windows jedes mal fragt, wenn mein Programm via Verknüpfung mit Adminrechten läuft?Nein

Monger
2013-10-03, 09:43:46
Noch immer ist mir eines nicht klar: Kann man per Manifest verhindern, dass Windows jedes mal fragt, wenn mein Programm via Verknüpfung mit Adminrechten läuft?
Nein. Was sollte denn Windows in so einem Fall tun? Das Programm still wieder beenden?

Den UAC still mit ja quittieren kann Windows nicht, und das ist auch gut so. Das wäre eine ziemlich heftige Sicherheitslücke.

aths
2013-10-03, 09:56:55
Warum wurde mir dann ein Tipp mit der manifest-Datei gegeben, was könnte diese bewirken? Dass das Programm von selbst nach Admin-Rechten fragt, ohne dass man sie via Verknüpfung starten muss?

PatkIllA
2013-10-03, 10:42:37
Warum wurde mir dann ein Tipp mit der manifest-Datei gegeben, was könnte diese bewirken? Dass das Programm von selbst nach Admin-Rechten fragt, ohne dass man sie via Verknüpfung starten muss?
Darüber kannst (und solltest) du festlegen, wie sich dein Programm verhalten soll.
Das was du willst geht nicht.
Da musst du dann andere Architekturen einsetzen. Z.B. ein Dienst oder Treiber, der einmalig installiert wird und dann vom Benutzerprogramm gesteuert wird. Da reisst man dann aber schnell neue Lücken ins System.

Ectoplasma
2013-10-03, 11:03:24
@Aths, hättest du auf mein Frage am Anfang geantwortet, ob dein Programm überhaupt Admin-Rechte benötigt, dann hätten wir die Diskussion jetzt hier nicht. Dann hätten wir dir gleich sagen können, dass das nicht geht. Es sei denn, dein Tool wird von einem Prozess mit Admin-Rechten gestartet.

aths
2013-10-03, 11:41:24
@Aths, hättest du auf mein Frage am Anfang geantwortet, ob dein Programm überhaupt Admin-Rechte benötigt, dann hätten wir die Diskussion jetzt hier nicht. Dann hätten wir dir gleich sagen können, dass das nicht geht. Es sei denn, dein Tool wird von einem Prozess mit Admin-Rechten gestartet.
Nein ich plage mich nur aus Spaß ab ... natürlich braucht es die. Die neuen Nvidia-Treiber verlangen Admin-Rechte um die Taktrate zu ändern.

Gibt es eine Standard-Methode, ein eigenes Programm von einem Prozess mit Adminrechten zu starten?


Darüber kannst (und solltest) du festlegen, wie sich dein Programm verhalten soll.
Das was du willst geht nicht.
Da musst du dann andere Architekturen einsetzen. Z.B. ein Dienst oder Treiber, der einmalig installiert wird und dann vom Benutzerprogramm gesteuert wird. Da reisst man dann aber schnell neue Lücken ins System.Was könnte man genau festlegen, wie sich das Programm verhalten soll?

Monger
2013-10-03, 11:42:10
Warum wurde mir dann ein Tipp mit der manifest-Datei gegeben, was könnte diese bewirken? Dass das Programm von selbst nach Admin-Rechten fragt, ohne dass man sie via Verknüpfung starten muss?
Die Annahme ist ja, dass dein Programm keine Admin Rechte benötigt, wie 99% aller Anwendungssoftware, und erhöhte Rechte unnötigerweise anfordert. Ein Manifest kann dabei helfen dies zu unterbinden.

Monger
2013-10-03, 11:47:53
Nein ich plage mich nur aus Spaß ab ... natürlich braucht es die. Die neuen Nvidia-Treiber verlangen Admin-Rechte um die Taktrate zu ändern.

Sieh es mal so: die Taktrate zu ändern ist ein schwerer Eingriff in die Hardware deines Computers. Das kann Hardwareschäden zur Folge haben - natürlich sollte das nur von einem Admin ausgeführt werden, und natürlich sollte der UAC dafür kommen.

Wie genau sprichst du denn den nVidia Treiber an? Ist das ein Prozess den du da startest? Gibt es da ne API die du aufrufst, oder...?

aths
2013-10-03, 11:48:35
Die Annahme ist ja, dass dein Programm keine Admin Rechte benötigt, wie 99% aller Anwendungssoftware, und erhöhte Rechte unnötigerweise anfordert. Ein Manifest kann dabei helfen dies zu unterbinden.
Mein Programm selbst fordert keine Admin-Rechte an. Man muss es via Verknüpfung starten und dort in den Einstellungen einen Haken setzen, damit es Admin-Rechte bekommt. Ich frage im Programm lediglich den Admin-Status ab, was aber keinen UAC-Dialog erzeugt, um zu wissen, ob der NVAPI-Aufruf funktionieren wird.

aths
2013-10-03, 11:58:01
Sieh es mal so: die Taktrate zu ändern ist ein schwerer Eingriff in die Hardware deines Computers. Das kann Hardwareschäden zur Folge haben - natürlich sollte das nur von einem Admin ausgeführt werden, und natürlich sollte der UAC dafür kommen.

Wie genau sprichst du denn den nVidia Treiber an? Ist das ein Prozess den du da startest? Gibt es da ne API die du aufrufst, oder...?
Bislang ging es ohne Adminrechte. Ich greife auf die NVAPI zu.

Monger
2013-10-03, 12:06:48
Bislang ging es ohne Adminrechte. Ich greife auf die NVAPI zu.
Wäre es vielleicht möglich, dass auf deinem lokalen Rechner etwas installiert ist was den lokalen Benutzer mit ausreichend Rechten ausstattet?

Wenn du das nVidia SDK installierst, könnte ich mir vorstellen dass die im Hintergrund gleich mal eine passende Benutzergruppe einrichten und deinen aktuellen Benutzer hinzufügen. Wenn die Gruppe alles kann was für nVidia notwendig ist, müssen auch keine erhöhten Rechte angefordert werden, ergo es gibt keine Aufforderung für den Administrator. Das würde erklären warum es bei dir läuft und woanders nicht.

Schau dir mal deine lokalen Benutzergruppen genau an. Und um es gegenzutesten: deinstallier mal dein nVidia SDK, und schau ob dein Programm trotzdem noch läuft. Eventuell hast du schlicht ein Problem mit dem richtigen Deployment.

aths
2013-10-03, 12:42:38
Mit "bislang" meinte ich die Treiberversion: Vor 325 kann man ohne Adminrechte übertakten, ab 325 braucht man Admin-Rechte.

Ectoplasma
2013-10-04, 08:08:21
Gibt es eine Standard-Methode, ein eigenes Programm von einem Prozess mit Adminrechten zu starten?

Ja gibt es: CreateProcessAsUser (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682429%28v=vs.85%29.aspx).

Mit "bislang" meinte ich die Treiberversion: Vor 325 kann man ohne Adminrechte übertakten, ab 325 braucht man Admin-Rechte.

Das Problem mit dem UAC-Dialog wird wohl daran liegen, dass ein entsprechender Manifest Eintrag in den nVidia DLLs existiert. Du hast wie gesagt keine Change, das zu verhindern. Man kann nur raten, was nVidia sich dabei gedacht hat. Monger hat aber ein gute Begründung geliefert.

Hast du eigentlich einmal nachgeschaut, ob deine Umgebung, dein Tool bereits mit Adminrechten startet?

Unfug
2013-10-04, 08:19:04
Das der Entwicklungspc keine Abfrage durchführt, kann auch daran liegen, dass der Speicherort ein anderer ist. Lege dein Programm mal nicht in den Download Ordner, sondern vllt direkt auf c und guck was passiert.

PatkIllA
2013-10-04, 08:59:59
Das Problem mit dem UAC-Dialog wird wohl daran liegen, dass ein entsprechender Manifest Eintrag in den nVidia DLLs existiert.AFAIK greift da bei dlls nichts.
Da sollte der Aufruf der Funktion einen entsprechenden Fehler liefern

aths
2013-10-04, 09:39:23
Ja gibt es: CreateProcessAsUser (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682429%28v=vs.85%29.aspx)Hat das die gleiche Wirkung wie runas von der Kommandozeile? Damit (runas) bekommt die gestartete Anwendung keine Adminrechte, auch wenn der /user der angegeben und nach dessem Passwort gefragt wird, Admin ist.

Hast du eigentlich einmal nachgeschaut, ob deine Umgebung, dein Tool bereits mit Adminrechten startet?edit: Möglicherweise habe ich hier den Denkfehler, da auf dem Entwickler-PC ein älterer Treiber installiert ist der noch keine Adminrechte braucht. Ich checke das mal.

edit 2: Hier erst mal ein Link zum Tool http://www.forum-3dcenter.org/vbulletin/showthread.php?p=9945403#post9945403

edit: Ja, ich lag falsch. Auch aus der Entwicklungsumgebung heraus hat das Programm keine Admin-Rechte. Jetzt mit dem neuen Treiber bräuchte ich die aber für Übertaktung.

anddill
2013-10-04, 11:23:30
Das Ganze ist wirklich ein blödes Problem. Auch Tools, die zB. von Mainboardherstellern mitgeliefert werden triggern oft eine UAC-Abfrage. Das ist besonders nett, wenn sie sich selbst im Autostart eintragen.
Ein "Ja, ich will das starten, nerv mich nicht mehr" Button fehlt echt.

Monger
2013-10-04, 11:46:53
Der Sinn der Geschichte ist nun mal, Entwickler dahingehend zu erziehen dass sie mit minimalen Rechten zurecht kommen. Wenn ein Tool für alltägliche, wiederkehrende Aufgaben administrative Rechte anfordert, läuft halt was schief.

aufkrawall
2013-10-04, 12:05:47
Der Sinn der Geschichte ist nun mal, Entwickler dahingehend zu erziehen dass sie mit minimalen Rechten zurecht kommen.
Und deshalb kann man den Mist auch ruhigen Gewissens abstellen.
Ist in den Standardeinstellungen ab Win 7 eh unsicher.

Monger
2013-10-04, 12:09:21
Und deshalb kann man den Mist auch ruhigen Gewissens abstellen.
Ist in den Standardeinstellungen ab Win 7 eh unsicher.
Bullshit. UAC abzuschalten bringt nur insofern was, als dass Dinge nicht mehr funktionieren die du ansonsten quittieren könntest.

PatkIllA
2013-10-04, 12:09:39
Und deshalb kann man den Mist auch ruhigen Gewissens abstellen.Das führt dann dazu, dass sich Malware direkt einnisten kann. Wenn ich auf ein Programm treffe, was das für die normale Nutzung braucht und nichts mit Admintätigkeiten zu tun hat, würde ich das gleich mal als mistig programmiert einstufen.
Ist in den Standardeinstellungen ab Win 7 eh unsicher.Das gilt ja nur für einige Systemeigenschaften. Ich habs aber sogar höher gestellt.

Exxtreme
2013-10-04, 16:47:43
Der Sinn der Geschichte ist nun mal, Entwickler dahingehend zu erziehen dass sie mit minimalen Rechten zurecht kommen. Wenn ein Tool für alltägliche, wiederkehrende Aufgaben administrative Rechte anfordert, läuft halt was schief.
Problem ist halt auch, UAC springt an obwohl ein Programm nix Administratives braucht. Da reicht es schon wenn man das Tool von "c:\Programme (x86)" startet.

PatkIllA
2013-10-04, 16:50:26
Problem ist halt auch, UAC springt an obwohl ein Programm nix Administratives braucht. Da reicht es schon wenn man das Tool von "c:\Programme (x86)" startet.
Das liegt dann aber am Programm. Dass die Nachfrage am Speicherort abhängt wäre mir neu. Da könnte sich höchstens die UAC Virtualization des Programmordners anders verhalten.

Monger
2013-10-04, 16:59:57
Das liegt dann aber am Programm. Dass die Nachfrage am Speicherort abhängt wäre mir neu. Da könnte sich höchstens die UAC Virtualization des Programmordners anders verhalten.
Das passiert gerne mal, wenn Programme versuchen in ihr eigenes Installationsverzeichnis zu schreiben. Was natürlich völliger Unsinn ist, aber halt regelmäßig passiert wenn Entwickler nix von Deployment verstehen.

aufkrawall
2013-10-04, 17:01:01
Bullshit. UAC abzuschalten bringt nur insofern was, als dass Dinge nicht mehr funktionieren die du ansonsten quittieren könntest.
Dieses Einsatzszenario ist für den Home-User meist ebenfalls totaler BS.

Das führt dann dazu, dass sich Malware direkt einnisten kann.

Das kann sie im gewissen Umfang auch mit eingeschränkten Rechten.
Außerdem konnte man bei Win 7 die UAC mit der Standardeinstellung direkt umgehen.
Ob das immer noch so ist, weiß ich aber ehrlich gesagt gerade nicht.


Wenn ich auf ein Programm treffe, was das für die normale Nutzung braucht und nichts mit Admintätigkeiten zu tun hat, würde ich das gleich mal als mistig programmiert einstufen.

Trotzdem bleibt dir nichts anderes übrig als ihm Admin-Rechte zu gewähren, sofern du nicht drauf verzichten willst (Wovon wohl nicht auszugehen ist, oder warum hat man es dann überhaupt erst gestartet?).


Das gilt ja nur für einige Systemeigenschaften. Ich habs aber sogar höher gestellt.
Würde mich zu Tode nerven.
Komischerweise hat sich bei mir ohne UAC noch keine Malware von selbst oder überhaupt jemals installiert. ;)

PatkIllA
2013-10-04, 17:01:26
Das passiert gerne mal, wenn Programme versuchen in ihr eigenes Installationsverzeichnis zu schreiben. Was natürlich völliger Unsinn ist, aber halt regelmäßig passiert wenn Entwickler nix von Deployment verstehen.
Dafür gibt es ja die UAC Virtualisierung. Dann werden die Schreibzugriffe umgeleitet.

aufkrawall
2013-10-04, 17:02:09
Dafür gibt es ja die UAC Virtualisierung. Dann werden die Schreibzugriffe umgeleitet.
Funktioniert die denn für alle Pfade?

PatkIllA
2013-10-04, 17:10:33
Bullshit. UAC abzuschalten bringt nur insofern was, als dass Dinge nicht mehr funktionieren die du ansonsten quittieren könntest.Wenn du UAC abschaltest hat man auch wirklich Adminrechte, wenn man Mitglied der Administratoren Gruppe ist. Weniger funktionieren wird also nicht.
Funktioniert die denn für alle Pfade?
AFAIK wird das nur beim 32 Bit Programme Ordner angewendet.
Dieses Einsatzszenario ist für den Home-User meist ebenfalls totaler BS.Inwiefern Die meisten Home-User haben nicht mal ansatzweise eine Ahnung was da alles abläuft.
Das kann sie im gewissen Umfang auch mit eingeschränkten Rechten.So tief einnisten wird ohne Adminrechte nichts. Für Keylogger und Datenauslesen reicht es aber natürlich.
Außerdem konnte man bei Win 7 die UAC mit der Standardeinstellung direkt umgehen.
Ob das immer noch so ist, weiß ich aber ehrlich gesagt gerade nicht.Zumindest das Umstellen der Stufe erfordert jetzt auch eine Bestätigung.
Würde mich zu Tode nerven.
Komischerweise hat sich bei mir ohne UAC noch keine Malware von selbst oder überhaupt jemals installiert. ;)Ich finde es ganz praktisch zu wissen, wann was mit Adminrechten läuft und wann nicht.

Monger
2013-10-04, 17:14:37
Dieses Einsatzszenario ist für den Home-User meist ebenfalls totaler BS.

Du verstehst nicht. Gibt genügend Software, die z.B. versucht irgendwas nachzukonfigurieren. Wenn UAC aus ist, scheitern diese Abfragen still, und du kriegst als Ottonormalverbraucher davon gar nichts mit. Dann funktioniert deine Software so ein bisschen, und wenn sie mal nicht tut was sie soll, stehst du als Anwender wie der Ochse vorm Berg.
Und der DAU regt sich dann darüber auf dass Windows nicht richtig funktioniert, nachdem irgendein "Experte" ihm dazu geraten hat sein eigenes System zu sabotieren. Weil ist ja viel praktischer so.

Dafür gibt es ja die UAC Virtualisierung. Dann werden die Schreibzugriffe umgeleitet.
Da gibt es leider ziemlich abenteuerliche Varianten. Habe z.B. auch einige Male erlebt, dass die Schreibzugriffe zwar korrekt virtualisiert wurden, aber die Lesezugriffe aus dem Programm heraus waren halt handgestrickt. Schreiben ging, lesen nicht mehr. Bei solchen Programmen hilft es manchmal ironischerweise, explizit NICHT in Program files (x86) zu installieren.

Wenn du UAC abschaltest hat man auch wirklich Adminrechte, wenn man Mitglied der Administratoren Gruppe ist. Weniger funktionieren wird also nicht.

Es gibt Dinge die erfordern wirklich einen elevierten Admin Token. Selbst mit ausgeschaltetem UAC musst du dein Programm dann immer noch elevieren. Tust du das nicht, kann Windows elevierte Anfragen still scheitern lassen. Ich hab das selber auf Arbeit leidvoll erfahren müssen: wir mussten zeitweise aus Deploymentgründen UAC deaktivieren, und dann merkt man erstmal was alles nicht funktioniert.

PatkIllA
2013-10-04, 17:19:42
Du verstehst nicht. Gibt genügend Software, die z.B. versucht irgendwas nachzukonfigurieren. Wenn UAC aus ist, scheitern diese Abfragen still, und du kriegst als Ottonormalverbraucher davon gar nichts mit. Dann funktioniert deine Software so ein bisschen, und wenn sie mal nicht tut was sie soll, stehst du als Anwender wie der Ochse vorm Berg.Das ist dann aber gleich der zweite Fall von mülliger Programmierung, wenn man die Fehler nicht behandelt. Wenn man auf sowas heute noch trifft gehört die Software gelöscht.
Da gibt es leider ziemlich abenteuerliche Varianten. Habe z.B. auch einige Male erlebt, dass die Schreibzugriffe zwar korrekt virtualisiert wurden, aber die Lesezugriffe aus dem Programm heraus waren halt handgestrickt. Schreiben ging, lesen nicht mehr. Bei solchen Programmen hilft es manchmal ironischerweise, explizit NICHT in Program files (x86) zu installieren.Das kann natürlich sein. Ob die UAC-Abfrage oder kommt sollte davon aber unabängig sein.

Monger
2013-10-04, 17:23:55
Das ist dann aber gleich der zweite Fall von mülliger Programmierung, wenn man die Fehler nicht behandelt. Wenn man auf sowas heute noch trifft gehört die Software gelöscht.

So wie in diesem Fall nVidias Grafiktreiber *Hust*

aufkrawall
2013-10-04, 17:24:19
Wenn du UAC abschaltest hat man auch wirklich Adminrechte, wenn man Mitglied der Administratoren Gruppe ist. Weniger funktionieren wird also nicht.

So ist es, es fehlen höchstens Daten, die in die virtualisierten Ordner geschrieben wurden.


So tief einnisten wird ohne Adminrechte nichts. Für Keylogger und Datenauslesen reicht es aber natürlich.

Ist die Frage, ob es nicht möglich ist, sich irgendwo im Autostart zu verewigen. Internetzugriff gibts auch und auslesen kann man auch ne Menge (oder gar alles?).


Zumindest das Umstellen der Stufe erfordert jetzt auch eine Bestätigung.

Das war afair schon immer so. Man konnte früher aber den Taskplaner ohne Adminrechte starten und dort einen Job festlegen, ein Programm mit Adminrechten zu starten (was dann ohne UAC-Abfrage passierte). Das geht mittlerweile aber wohl nicht mehr.


Inwiefern

Wenn man zum Beispiel mit nem eingeschränkten Account unterwegs ist, kann man mit UAC per Passwort auf die Systemeinstellungen zugreifen.
Dachte, monger meint vielleicht das. Tut er aber wohl nicht.

Du verstehst nicht. Gibt genügend Software, die z.B. versucht irgendwas nachzukonfigurieren. Wenn UAC aus ist, scheitern diese Abfragen still, und du kriegst als Ottonormalverbraucher davon gar nichts mit. Dann funktioniert deine Software so ein bisschen, und wenn sie mal nicht tut was sie soll, stehst du als Anwender wie der Ochse vorm Berg.
Und der DAU regt sich dann darüber auf dass Windows nicht richtig funktioniert, nachdem irgendein "Experte" ihm dazu geraten hat sein eigenes System zu sabotieren. Weil ist ja viel praktischer so.

Du verwechselst da irgendwas. Ohne UAC läuft halt alles wie gewohnt mit Adminrechten. Bei Windows 8 muss man nur noch zusätzlich irgendwas über inoffizielle Wege abschalten afaik.

PatkIllA
2013-10-04, 17:25:28
So wie in diesem Fall nVidias Grafiktreiber *Hust*
Hier geht es doch um die Übertaktung. Und das kann die Systemstabilität beeinträchtigen und ist damit verständlicherweise für den Standardbenutzer nicht zu ändern.

aufkrawall
2013-10-04, 17:26:56
Hier geht es doch um die Übertaktung. Und das kann die Systemstabilität beeinträchtigen und ist damit verständlicherweise für den Standardbenutzer nicht zu ändern.
Ich las hier, dass sich das mit den jüngsten Treibern wohl wieder geändert hat.

PatkIllA
2013-10-04, 17:34:16
Ist die Frage, ob es nicht möglich ist, sich irgendwo im Autostart zu verewigen. Internetzugriff gibts auch und auslesen kann man auch ne Menge (oder gar alles?).
Autostart für den Benutzer geht. Aber nicht für alle
Das war afair schon immer so.In den Vorabversionen war das nicht so.
Man konnte früher aber den Taskplaner ohne Adminrechte starten und dort einen Job festlegen, ein Programm mit Adminrechten zu starten (was dann ohne UAC-Abfrage passierte). Das geht mittlerweile aber wohl nicht mehr.Mich hat er zumindest gerade nachdem Password gefragt, als ich das versucht habe und den Taskscheduler nicht mit Adminrechten gestartet habe.

aufkrawall
2013-10-04, 17:39:39
Es gibt auch andere Methoden. Ob die jetzt mit nem gepatchten Win 8.1 alle so funktionieren, will ich nicht behaupten, ohne es selbst ausprobiert zu haben.
Malware wirbt jedenfalls damit, UAC umgehen zu können. Beispiel:
http://www.kernelmode.info/forum/viewtopic.php?f=16&t=547&p=21053&hilit=uac#p21053

Man sollte nicht auf die Idee kommen, sich auf die UAC als Sicherheitsfeature verlassen zu können.

PatkIllA
2013-10-04, 17:43:31
Verlassen kann man sich eh auf nichts.
Es gibt ja auch regelmäßig Patches, die verhindern, dass Malware über Lücken Systemrechte erlangen können. Damit kommt man natürlich an UAC vorbei.
Oder man versucht Programmen, denen man Adminrechte gewährt den Schadcode unterzujubeln.

Passiert unter Linux ja auch regelmäßig
Serverrprozess infiltrieren und von da über eine zweite Lücke in den Kernel kommen. Gelegentlich auch mit mehr als zwei Lücken.

Monger
2013-10-04, 18:26:42
Du verwechselst da irgendwas. Ohne UAC läuft halt alles wie gewohnt mit Adminrechten. Bei Windows 8 muss man nur noch zusätzlich irgendwas über inoffizielle Wege abschalten afaik.
Es gibt unter Win Vista aufwärts nicht den "einen Admin", weder mit UAC an noch aus. UAC ist auch kein Sicherheitsfeature, es hilft nur dabei, sauber den richtigen Kontext zu wählen.
Selbst wenn du Administrator bist, gibt es immer separat noch den elevierten Administrator nebenbei. Wenn du UAC "ausschaltest", bewirkt das nichts anderes als das beide Rollen bis zur Unkenntlichkeit zusammengemischt werden, und Windows versucht die richtige Rolle im richtigen Kontext zu benutzen.
Und das geht eben manchmal schief, weil weder die eine Rolle noch die andere immer alles dürfen. Es gibt Situationen die der Computer nicht richtig interpretieren kann (vorallem wenn die Software fehlerhaft ist), und auch nicht sollte.

Ein Beispiel: Visual Studio 2010 startet sich mit UAC aus automatisch im elevierten Modus. Das führte bei uns dazu dass der Debugger komische Sachen getan hat, bis hin zum Deadlock.
Anderes Beispiel: wenn du mit UAC aus die Kommandozeile startest, und einen Systembefehl wie z.B. Sysprep aufrufst, scheitert er dir. Weil die Kommandozeile - sobald einmal gestartet - eleviert sich nicht automatisch. Du musst also die CMD.exe selbst mit UAC aus im elevierten Modus starten, sonst geht nüscht. Was ohne UAC ziemlich hässlich ist, weil du kriegst ja kein Feedback darüber was du getan hast, und ob du jetzt nur Admin oder Admin-Admin bist.

Wenn du UAC abschaltest, schaltest du eben kein Sicherheitsfeature aus, sondern lediglich dessen Bedienung. Windows versucht dann so vage wie möglich zu agieren, um möglichst alles abzudecken, und scheitert halt regelmäßig.
UAC ist ein Feature, damit der Anwender verstehen kann in welchem Kontext er sich gerade bewegt, und ihm den Wechsel möglichst einfach zu machen. UAC abzuschalten ändert am Sicherheitsmodell von Windows überhaupt gar nichts, außer es für den Anwender intransparenter zu machen.

PatkIllA
2013-10-04, 18:53:19
Es gibt unter Win Vista aufwärts nicht den "einen Admin", weder mit UAC an noch aus.Es gibt noch den speziellen Administrator, den man aber explizit aktivieren muss. Der hat dann auch keine UAC Abfragen und alles läuft direkt mit Adminrechten unabhängig von der Einstellung.
Selbst wenn du Administrator bist, gibt es immer separat noch den elevierten Administrator nebenbei.Bei mir ist dann alles eleviert.
Wenn du UAC "ausschaltest", bewirkt das nichts anderes als das beide Rollen bis zur Unkenntlichkeit zusammengemischt werden, und Windows versucht die richtige Rolle im richtigen Kontext zu benutzen.Dann hängt es eben von der Gruppenzugehörigkeit ab, wie unter XP.
Und das geht eben manchmal schief, weil weder die eine Rolle noch die andere immer alles dürfen.Auch als elevierter Admin darf man nicht automatisch alles. Nicht ohne Grund gibt es noch den "Benutzer" System.
Ein Beispiel: Visual Studio 2010 startet sich mit UAC aus automatisch im elevierten Modus.Mit UAC aus wird alles direkt im elevierten Modus gestartet
Anderes Beispiel: wenn du mit UAC aus die Kommandozeile startest, und einen Systembefehl wie z.B. Sysprep aufrufst, scheitert er dir. Weil die Kommandozeile - sobald einmal gestartet - eleviert sich nicht automatisch.Also bei mir hat die Adminrechte. Fürs UAC ausstellen und nacher wieder anstellen musste ich sogar neustarten. Abmelden reicht nicht. Da muss also einiges anderes sein.
Du musst also die CMD.exe selbst mit UAC aus im elevierten Modus starten, sonst geht nüscht. Was ohne UAC ziemlich hässlich ist, weil du kriegst ja kein Feedback darüber was du getan hast, und ob du jetzt nur Admin oder Admin-Admin bist.Bei der Eingabeaufforderung steht das wie bei VisualStudio sogar in der Titelleiste und bei mir verhält sich das auch alles so wie ich es erwarte.

In wie weit UAC jetzt ein Security- Convenience- oder sonst was Feature ist kann man sicher diskutieren.
Was ich viel nerviger finde ist, dass die Abfrage auch kommt, obwohl ich eigentlich nur was nachgucken will (z.B. Computerverwaltung) oder regedit.

aufkrawall
2013-10-05, 00:26:47
Was ich viel nerviger finde ist, dass die Abfrage auch kommt, obwohl ich eigentlich nur was nachgucken will (z.B. Computerverwaltung) oder regedit.
Gegen eine gescheite UAC hätt ich auch nichts. Aber ohne die geringste Form der Regelverwaltung ist das fast so nervig wie damals die Komponentenkontrolle von Kaspersky (die bei jedem Modul, das ein Prozess laden wollte, gemeckert hat = hunderte Pop Ups :D ). Diese "Gedenksekunden" (das System läuft subjektiv träger) und die Abdunklung sind auch meganervig.