UAC-Abfrage umgehen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

    UAC-Abfrage umgehen

    Hallo Leute,

    ich habe ein nettes Programm geschrieben, welches zur Laufzeit Zugriff auf Datenbankverbindungen benötigt. Da das Programm bei jedem Benutzer des Systems laufen soll habe ich in der Registrierung die EXE-File in HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\ als "RUNASADMIN" eingetragen. Läuft auch soweit ganz gut.
    Nun ist nur das Problem, wenn die EXE von einem Nicht-Admin-Konto ausgeführt wird, kommt beim Start die UAC-Sicherheitsabfrage, ob ich zulassen will, dass das Programm Änderungen durchführt.

    Also meine Frage ist, ob es einen zusätzlichen Reg-Eintrag gibt, um für dieses Programm die UAC-Abfrage zu deaktivieren oder immer im Hintergund zu bejaen?

    Vielen Dank im Voraus.
    Das wäre gegen die Sicherheits-Vorkehrungen von Microsoft und widerspricht diesen auch.

    Ein Programm, was ohne extra Berechtigung als Admin handeln darf, also auf Registry, System32 Ordner etc. zugreifen hört sich nicht gesund an ;)
    Auch wenn du es nicht böse meinen willst.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Nein, das ist nicht möglich.
    Du kannst es aber mal damit versuchen (Rechtslick auf dei Exe-Datei -> Eigenschaften):
    Bilder
    • berechtigung.png

      118,74 kB, 753×541, 538 mal angesehen
    Von meinem iPhone gesendet
    Die Sache mit dem Rechtsklick auf die EXE-File habe ich ja mit dem Reg-Eintrag erledigt.
    Dieser wird beim Setup automatisch in die Registry geschrieben.
    Später soll das Programm halt bei Firmen verwendet werden. Da kann man davon ausgehen, dass auch absolute PC-Dinosaurier dabei sind, die dann gleich auf abbrechen drücken und rum heulen, dass das Programm nicht startet oder keine Berichte auswirft etc. Das will ich halt vermeiden in irgendeiner Weise.
    Es handelt sich ja auch nicht um was böses. Das Programm benötigt halt für die Erstellung von Druckberichten mit CrystelReports Adminrechte für die SQL-Serververbindung zur Datenbank.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „affrop“ ()

    affrop schrieb:

    Die Sache mit dem Rechtsklick auf die EXE-File habe ich ja mit dem Reg-Eintrag erledigt.

    Da man damit die Einstellung für alle Nutzer ändert, wird das Computerweit gelten. Der von dir erwähnte Schlüssel (HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\) liegt in CURRENT_USER und ist somit nur für den derzeitigen Benutzer gültig.
    Was das heißt? Das heißt, dass du mal probieren solltest, was ich gepostet habe.
    Von meinem iPhone gesendet
    Da an einem Arbeitsplatz im Normalfall einer Bussines-Anwendung immer nur ein Benutzer und nicht mehrere parallel angemeldet sind ist der Schlüssel in HK_Current_User eigentlich recht gut angelegt. Wenn sich der Admin einloggt ist die Ausführung des Programms ohnehin nicht von Bedeutung, da dieser damit eher nicht arbeiten wird. So ist das Programm jedenfalls konzipiert. Könnte aber den Reg-Eintrag auch in Local_Machine setzen. Da hast du natürlich recht.
    Aber selbst wenn ichs mit dem Rechtsklick mache (habe übrigens beide Methoden probiert) kommt immer noch die UAC-Sicherheitsabfrage. Aber genau die will ich ja deaktivieren oder umgehen.
    Eine Deaktivierung in der Reg HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA ist zwar möglich, gilt dann aber systemweit, was ich nicht will. Es soll nur dieses eine spezielle Programm ausgenommen werden. Und das am besten durch einen Reg-Eintrag, der beim Setup vom Installer erzeugt werden kann.
    Das wäre glaub eine gradezu skandalöse Sicherheitslücke, wenn man den UAC umgehen könnte.

    affrop schrieb:

    Das Programm benötigt halt für die Erstellung von Druckberichten mit CrystelReports Adminrechte für die SQL-Serververbindung zur Datenbank.
    Ich versteh nicht wirklich was davon, aber vlt. ist da was dusslig konfiguriert, dass man diese Dienste nur als Admin nutzen kann?
    Das sind doch eiglich Dienste, die jeder User nutzen können sollte, oder?

    affrop schrieb:

    Da das Programm bei jedem Benutzer des Systems laufen soll habe ich in der Registrierung die EXE-File in HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\ als "RUNASADMIN" eingetragen. Läuft auch soweit ganz gut.

    1. Dafür ist die app.manifest vorgesehen, nicht die Registry...
    2. Das Umgehen von UAC ist nicht möglich, weil sonst wäre es sinnlos. Du kannst es lediglich systemweit deaktivieren.
    @ErfinderDesRades: Die SQL-Connection habe ich mit dem Designer konfiguriert und im Debug-Modus läuft auch alles. Erst wenn ich die Dateien durch ein Setup in ein andren System-Ornder lege, z.b. C:\Program Files\ dann läuft zwar das Prog immer noch, aber die Berichte sind leer, weil die Daten nicht in die dafür benötigte Datenbank geschrieben werden. Wenn ich das Prog als Admin ausführe klappt alles super.

    @Quadsoft: die app.manifest, war auch mein erster Gedanke. Dort das requiereexecutionlevel=requiereadministrator, uiacces=false (bzw. true) und schon kam der Fehler, dass requiereadministrator von clickonce nicht unterstützt wird. Also hab ichs über die Registry versucht.
    Da da hast du doch die wahrscheinliche Ursache deines Problems. Da du wahrscheinlich schreibrechte auf die Datenbank brauchst, das Programm aber via Setup installierst, wird der normale Benutzer diese Rechte nicht haben.

    Lösungsvorschlag 1:
    Du packst die MDB an eine universale Stelle, an der jeder Benutzer schreibrechte hat (mir fällt im Moment keiner ein, dir aber vllt). Ggf. kannst du die ja beim Setup erstellen.

    Lösungsvorschlag 2:
    Gib der Benutzergruppe Authentifizierte Benutzer schreibrechte auf den Ordner C:\PRogram Files\DeinProgramm. Falls du das nicht manuell machen willst, geht das bestimmt auch in deinem Setup-Programm irgendwo.

    Lösungsvorschlag 2.1:
    Erstelle eine neue Benutzergruppe, zu der die Benutzer, die es benutzen sollen, hinzugefügt werden können. Diese Benutzergruppe bekommt anschlie0end schreibrechte auf das entsprechende Verzeichnis.
    Von meinem iPhone gesendet
    Zu Lösungsvorschlag 1 viele mir spontan nur "Eigene Dateien" ein, aber ich kann mal nach alternativen Pfaden schauen.
    Zu Lösungsvorschlg 2, ich nutze InstallShield 12, ich hab noch keine Möglichkeit gefunden, Benutzerrechte zu vergeben oder zu ändern. Evtl ist das per InstallScript möglich. Oder werden diese Rechte irgendwo bzspl. in ner Registry lokal abgelegt, so das da nur ein Wert geändert werden muss?

    affrop schrieb:

    Eigene Dateien
    Sicher, dass jeder Benutzer Zugriff auf die eignenen Dateien eines Benutzers hat?
    Du sagst, dass du das Programm im Firmen verwenden willst: Dort werdne die Benutzerprofile oft Serverseitig gespeichert, was zu Datenverlust und/oder Dateninkonsistenz bei der Datenbank führen kann.

    affrop schrieb:

    Rechte irgendwo bzspl. in ner Registry lokal abgelegt
    Die Rechte werden direkt im NTFS-Dateisystem abgelegt. MIt der REgistry kommst du da nicht weit. Von Install-Skripten habe cih keine Ahnung, aber per VBA, Batch oder PowerShell wäre das sicherlich möglich.
    Von meinem iPhone gesendet
    Da die Datenbank eigentlich nur lokal für die Berichterstellung gebraucht wird, will ich von einem Speicherplatz auf dem Server absehen.
    Und von Install-Skripten hab ich eigentlich auch keine Ahnung. Deshalb hab das erstmal außenvor gelassen.
    Können eigentlich Zugriffsrechte auf Ordner bei der Erstellung des Ordners per Code mit übergeben werden?

    affrop schrieb:

    will ich von einem Speicherplatz auf dem Server absehen.
    Du hast mich nicht richtig verstanden: Viele Firmen lagern das Profil bzw. die Eigenen Dateien auf einen Server aus - da kannst du nichts dran rütteln.

    affrop schrieb:

    Können eigentlich Zugriffsrechte auf Ordner bei der Erstellung des Ordners per Code mit übergeben werden?
    Ob es bei der Erstellung geht, weiß ich nicht. Man kann aber via VB.NET Zugriffsrechte ändern.
    Siehe:
    stackoverflow.com/a/9222490/785210
    stackoverflow.com/q/1410127/785210
    redmondpie.com/applying-permis…y-windows-folder-using-c/
    Von meinem iPhone gesendet
    nein xtts.
    in der datenbank sind vordefinierte tabellen enthalten, die mit werten aus datagrids gefüllt werden, damit ein Bericht via Crystalreports erstellt werden kann. die verbindung hab ich mit dem designer im visualstudio erstellt. es sollte also immer der sql-server sein.

    Die Sache mit den zugriffsrechten werd ich mal durchdenken wie ich das machen kann, wenn setup den pfad erstellt hat, das prog selbst aber noch nicht gestartet wurde.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „affrop“ ()