Administratore SetRegistryKey



  • Hi,

    in meiner mfc Anwendung wird in Init SetRegistryKey ausgelöst, um
    später einige Daten in der Reg zu hinterlegen.

    Das führt nun dazu das die Anwendung immer im Adminmodus gestartet werden solle.
    Auch kann solche App scheinbar nicht mehr über Autostart ausgeführt werden
    und auch nicht über den Aufgaben-Starter.

    Was muss getan werden damit es unter user -rechten auch so läuft ?

    Danke der Hinweise
    Grüße aus Preußen
    Karsten



  • @KahnSoft
    Soweit ich weiß lässt die UAC das Starten von Programmen mit Admin-Rechten nur noch nach Bestätigung zu.
    Eine Möglichkeit könnte sein, die Berechtigungen des Registry-Knotens zu setzen, damit deine Anwendung da schreiben darf.



  • Was ich in der Doku zu SetRegistryKey gefunden habe sollten die Keys sowieso im User-Hive sein. Also ohne Admin-Rechte verwendbar. Könnte sein dass das bei Uralt-MFC Versionen anders war, aber ab Visual Studio 2003 müsste es IIRC spätestens gehen. Ich hatte da vor langer Zeit mal ne VS 2003 MFC Anwendung und da hat SetRegistryKey funktioniert und das Zeug ist im User Hive gelandet. Kann mich auch nicht erinnern dass UAC da ein Problem gemacht hätte.



  • Hallo,

    hmm.. die dann über AfxGetApp()->WriteProfileString("Settings","Lic", Lic);

    Im Anschluß wird über HID ein Usb Gerät geöffnet, vielleicht benötigt man für diese Hardwarezugriffe Adminrechte ? Ich glaube eigentlich nicht.

    Der Sicherheitswahnsinn wird immer irrer.

    Danke für eure Hinweise, den Fehler konnte ich jedoch nicht auflösen, das Programm hat
    sehr viele Systemaufrufe bei über 1 million Quellenzeilen. Wo da nun was falsch ist
    wird mir noch zur Sisyphus Arbeit.


  • Mod

    Nur um klar zu stellen: CWinApp::SetRegistryKey sorgt in keinem Fall für einen Zugriff, bei dem Admin Rechte nötig wären.
    Die MFC benutzt nur HKCU.

    Wenn Deine Anwendung als Admin startet, hast Du evtl. Deine Shims geändert, also der Anwendung in den Eigenschaften oder direkt im Manifest angegeben, dass die Anwendung als Admin starten soll.

    Grundsätzlich gibt es bei einem normalen Manifest in einer Anwendung gar keinen Grund warum Windows eine Anwendung "von selbst" als Admin startet. Das Binary oder welche Befehle Du ausführen möchtest ist Windows´egal.
    Erst wenn der Aufruf, dann versucht wird schlägt der halt fehl...

    Deine Schilderung der Ursachen ist falsch. Du hast ein ganz anderes Problem.



  • @Martin-Richter Danke für deine Erklärungen, ich weiß nicht was ein Manifest sein soll, keiner meiner Anwendungen hat eines, wüsste auch nicht woher oder was da stehen könne. Manchmal war eins unter resourcen zu sehen, wo ich dann High DPI Einstellte, mit jeder neuen Windows Version war dann das Verhalten anders. (Bis hin das die MFX Styles jedes mal anders aussahen ^^)

    Ich stelle das zzt. über die Verknüpfung ein.
    Problem dann, wenn der Benutzer nicht als Admin einloggt, dann läuft auch keines meiner Programme.
    Von Apps habe ich keine Ahnung.

    Danke der Hinweise
    Karsten Schulz


  • Mod

    Wenn keine Deiner Anwendungen ein Manifest hat, DANN kann Windows aus Kompatibilitätsgründen Deine Anwendung evtl. als Setup erkennen und ein Admin-Level erzwingen.

    Es ist absoluter Blödfug und in keiner Weise mehr seit Windows XP und spätestens seit Vista verantwortbar eine DLL oder eine EX ohne Manifest zu erzeugen. In diesem Fall wird Dein Programm als "inkompatibler alter Schrott behandelt"... Du bekommst nicht mal Fehlermeldungen, wenn Du in Bereiche schreibst in die Du nicht schreiben darfst.

    Nochmal: Unverantwortlich! Just my 2 cents...



  • @Martin-Richter Naja.. Blödfung und unverantwortung, schon immer neigten Programmierer autistische zustände zu fröhnen, ich verantworte damit zb. das der Airbus 380 nicht herunter kommt 🙂


  • Mod

    Du kannst mich ignorieren und meine Ratschläge abtun und Dich Änderungen verweigern.
    Mein letzter Rat nochmal:
    Ohne ein Manifest wird Dein Programm Dinge tun, die Du nicht willst, denn Windows wird Dein Programm als "alter Schrott abtun"! Punkt.



  • @Martin-Richter Auch i wo, meine Programmteile laufen nicht als Schrott -Ware, schließlich arbeiten ja tausende davon auf xp w7 und w10 Rechnern. Damit hast Du schon vor 20 Jahren gedroht, das ohne Manifeste dann alles in einer Sandbox abliefe, oder in einer VM.. Und wer den ganzen Mist mitmacht wird auch genau da landen in einer VM Sandkiste der Wunsch aller Betriebssystemhersteller damit endlich alles überall laufen werde.

    Ein Irrsinn der die Computerentwicklung um 100 Jahre ausbremsen wird 🙂
    (Manifeste sind schon durch den Linker als Abschnitt immer in der Binary dabei).
    Nur was es bewirkt, ist so schwachsinnig wie dessen Existenz.


Log in to reply