Preference Datei mit Adminrechten

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Preference Datei mit Adminrechten

Beitrag von Josh »

Folgendes habe ich vorgehabt:
  • Im Userdirectory wollte ich eine prefs Datei anlegen, wo die Einstellungen des Users reingeschrieben werden.
  • Im Programmverzeichnis wollte ich eine zweite prefs Datei anlegen, wo Einstellungen gespeichert werden, die vom User nicht geändert werden können.
  • Alle Einstellungen sollten aus dem Menü Datei>Einstellungen bearbeitet werden können, wobei bei den globalen Einstellungen dann der Administratormodus angefordert werden sollte.
Momentan habe ich überhaupt keinen Plan, wie ich das lösen soll.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Preference Datei mit Adminrechten

Beitrag von Bisonte »

Einfachste Lösung : Ein zweites Programm, dem Du die Einstellungen übergibst, die geändert werden sollen, dass dann AdminRechte einfordert.

Hatte im Forum auch schonmal nachgefragt, und es herrschte die Meinung, es sei nicht möglich, während der Laufzeit Adminrechte nachträglich einzufordern.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Preference Datei mit Adminrechten

Beitrag von Danilo »

Man kann auch das Programm selbst noch einmal im Adminmodus starten, dann aber einen
anderen Codeteil ausführen. Dann brauchst Du für den Dialog im Adminmodus keine externe .exe

Code: Alles auswählen

If ProgramParameter(0)<>"-admin"
    ;
    ; normales programm
    ;
    MessageRequester("INFO","USER MODE")

    FileName.s = ProgramFilename()
    
    Info.SHELLEXECUTEINFO
    Info\cbSize = SizeOf(SHELLEXECUTEINFO)
    Info\lpVerb = @"runas"
    Info\lpFile = @FileName
    Info\lpParameters = @"-admin"
    Info\nShow = #SW_SHOW
    ShellExecuteEx_(@Info)
Else
    ; dialog für admin modus
    MessageRequester("INFO","ADMIN MODE")
EndIf
(Der Code soll nur das Prinzip zeigen, aber viele Wege führen dort hin)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten