Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
1 - Einsteigerfragen

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 WriteIni
Autor: Carina (---.4.140.146.dsl.dyn.forthnet.gr)
Datum:   20.06.19 21:30

Hallo liebe Gemeinde,
ich versuche mit WriteIni einen Eintrag in die registry zu schreibe.

Hkey_Current_User
WriteIni "HKEY_1","RGH-Soft\Spiele\MeinProgramm","Sound"="EIN"

Funktioniert auch so weit, allerdings wenn ich irgendwas unter

Hkey_Local_Machine schreiben möchte bekomme ich eine Fehlermeldung.

Hängt das evtl. mit irgendwelchen berechtigungen zusammen ?

Kann mir jemand sagen woran das liegt.

Beitrag beantworten
 
 Re: WriteIni
Autor: Volkmar Göritz (---.dynamic.qsc.de)
Datum:   22.06.19 19:30

Du vermutest schon richtig. Um in HKLM zu schreiben müßte Dein Programm mit Admin-Rechten laufen.
Als Roland diese Registryfunktionen geschrieben hat, gab es das Problem noch nicht. Die alten Windowsversionen ließen das noch zu und in die Hilfe hat es diese Beschränkung bei aktuellen Windowsversionen bisher nicht geschafft :-)

Gruß Volkmar



Beitrag beantworten
 
 Re: WriteIni // Admin-Rechte anfordern
Autor: Jens-Arne Reumschüssel (---.dip0.t-ipconnect.de)
Datum:   18.07.19 20:35

Hallo Carina,

wenn Du Dein Programm mit Admin-Rechten ausführen möchtest (wenn es umbedingt HKLM sein soll), geht das am einfachsten mit einem Starterprogramm, welches das Hauptprogramm startet und dabei die entsprechenden Rechte anfordert (es gibt noch andere Methoden, aber die sind komplizierter, z.B. über Manifeste):

Starter-Programm:
 @shellexec("Hauptprogramm.exe","runas",1)
 end
 


Hauptprogramm (muss natürlich kompiliert als exe vorliegen und in diesem Beispiel »Hauptprogramm.exe« heißen):
 cls
 if @checkadminrechte()=1
   print "Dieses Programm läuft mit Administratorrechten."
 else
   print "Dieses Programm läuft nur mit Userrechten."
 endif
 waitinput
 end
 
 PROC CheckAdminRechte 'Rückgabe: 1=Admin, 0=kein Admin, 99=Fehler (falsche Windows-Version)
   declare member&,SID#,mhandle&,module$,function$,erg%
   module$="advapi32.dll"
   function$="CheckTokenMembership"
   mhandle&=@external("kernel32.dll","GetModuleHandleA",@addr(module$))
   if @external("kernel32.dll","GetProcAddress",mhandle&,@addr(function$))<>0
     dim SID#,16
     long SID#,0=513
     long SID#,4=83886080
     long SID#,8=32
     long SID#,12=544
     @external("advapi32.dll","CheckTokenMembership",0,SID#,@addr(member&))
     if member&=1
       erg%=1
     else
       erg%=0
     endif
     dispose SID#
   else
     erg%=99
   endif
   return erg%
 ENDPROC 'CheckAdminRechte
 


Beste Grüße, Jens-Arne

--- bearbeitet: CheckAdminRechte hinzugefügt, weil es gut passt (der Inhalt dieser Funktion ist nicht überwiegend von mir, ich weiß aber auch nicht mehr, woher ich das hatte)



Nachricht bearbeitet (18.07.19 20:50)

Beitrag beantworten
 
 Re: WriteIni // Interpreter mit Adminrechten starten
Autor: Jens-Arne Reumschüssel (---.dip0.t-ipconnect.de)
Datum:   18.07.19 21:36

Und, weil's gerade so schön war, hier noch eine Möglichkeit, mit der man den XProfan-Interpreter mit Admin-Rechten starten kann, um Programme zu testen, die das brauchen (hierfür braucht es das API-Äquivalent zu @shellexec, weil mit letzterem keine Parameter übergeben werden können - darin ist aber die im Interpreter zu startende prf-Datei enthalten):

 declare verb$,program$,params$
 program$="<DeinProfanPfad>\profan.exe"
 verb$="runas"
 params$="\q"+@par$(1)+"\q"
 @external("shell32.dll","ShellExecuteA",0,@addr(verb$),@addr(program$),@addr(params$),0,1)
 end
 


Diesen Code kompilieren und die exe als Interpreter in die Entwicklungsumgebung eintragen (bei XProfEd: Optionen --> Allgemeine Einstellungen... --> 1. Eintrag).

Gruß, Jens-Arne

-- bearbeitet: Sorry, war noch ein Fehler für prf-Dateien mit Leerzeichen drin, ist jetzt behoben.

-- nochmal bearbeitet: Hmm, es reicht auch, den Editor mit Admin-Rechten aufzurufen - dann wird auch der Interpreter mit ebendiesen gestartet. Ist also ein interessantes Beispiel, das aber eher kompliziert ist. ;-)



Nachricht bearbeitet (18.07.19 22:29)

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org