Deutsch
Quelltexte/ Codesnippets

Binär Datei Registry Schlüssel Unterschlüssel

 

KompilierenMarkierenSeparieren
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Registry: Schlüssel und alle Unterschlüssel binär in Datei speichern
Hive sichern abspeichern Registry
Def @Regsavekey(3)!ADVAPI32,RegSaveKeyASpeichert eine Schlüsselfolge in einen Hive.
Def @Regopenkeyex(5) !ADVAPI32,RegOpenKeyExALiefert Handle eines Registryschlüssels und öffnet ihn.
Def @Regclosekey(1) !ADVAPI32,RegCloseKeySchließt eine geöffneten Registryschlüssel.
Def @Lookupprivilegename(4)!advapi32,LookupPrivilegeNameAErmittelt aus dem Luid eines Privilegs dessen Namen.
Def @Lookupprivilegevalue(3) !advapi32,LookupPrivilegeValueAErmittelt aus dem Namen eines Privilegs dessen Luid.
Def @Openprocesstoken(3) !advapi32,OpenProcessTokenÖffnet Einstellprozess.
Def @Adjusttokenprivileges(6) !advapi32,AdjustTokenPrivilegesStellt Privilegien ein.
Def @Getcurrentprocess(0) !kernel32,GetCurrentProcessErmittel das Handle des aktiven Prozesses.
Declare Fehler&,Schlüssel$,Handle#,Handle&,Button&,Savefile$,Io%
Declare Newstate#,Luid1#,Luid2#,Privileg1#,Token&,Token#,Zahl2&,Zahl1&
Declare Buffer#,Oldvalue#,Out#,Größe#,System$
Der Folgende Codeanteil ist nur unter NT-basierten nötig
Dim Token#,4
Dim Newstate#,16
Dim Luid1#,8
Dim Privileg1#,256
Dim Buffer#,4
Dim Out#,256
Dim Größe#,4
Dim Oldvalue#,256
Clear Out#,Oldvalue#,Größe#,Buffer#,Privileg1#,Luid1#,Token#,System$
Long Newstate#,0=1Nur ein Privileg soll geändert werden
Long Newstate#,12=$00000002Das Privileg soll eingeschaltet werden
Let Fehler&=@Openprocesstoken(@Getcurrentprocess(),$0020 | $0008,Token#)Es wird ein Process mit dem Handle Token gestartet, der Privilegien für mein Programm einstellen soll.
Addstring Fehlercode OpenProcessToken: +@Str$(Fehler&)Wenns geklappt hat, dann 1.
Let Token&=@Long(Token#,0)Das Handle des Einstellprozesses wird ausgelesen.
String Privileg1#,0=SeBackupPrivilegePrivileg für RegSaveKey
Let Fehler&=@Lookupprivilegevalue(@Addr(System$),Privileg1#,Luid1#)Wenn ich es richtig vestanden habe, wird hier aus dem Privilegnamen eine Art lokales Handle für dieses Privileg ermittelt.
Addstring Fehlercode LookupPrivilegeValue: +@Str$(Fehler&)Wenns geklappt hat, dann 1.
Byte Newstate#,4=@Byte(Luid1#,0)
Byte Newstate#,5=@Byte(Luid1#,1)
Byte Newstate#,6=@Byte(Luid1#,2)
Byte Newstate#,7=@Byte(Luid1#,3)
Byte Newstate#,8=@Byte(Luid1#,4)
Byte Newstate#,9=@Byte(Luid1#,5)
Byte Newstate#,10=@Byte(Luid1#,6)
Byte Newstate#,11=@Byte(Luid1#,7)
Clear Buffer#
Let Zahl1&=256
Let Zahl2&=0
Let Fehler&=@Adjusttokenprivileges(Token&,Zahl2&,Newstate#,Zahl1&,Oldvalue#,Buffer#)Das Privileg wird aktiviert.
Addstring Fehlercode AdjustTokenPrivileges: +@Str$(Fehler&)Wenns geklappt hat, dann 1.
Addstring SIZE: +@Str$(@Long(Buffer#,0))
Long Größe#,0=256
@Lookupprivilegename(@Addr(System$),Luid1#,Out#,Größe#)Aus dem ersten Luid wird wieder der Privilegname ermittelt.
Addstring PRIVILEG: +@String$(Out#,0)Nur Rückmeldung, ob es geklappt hat.
Dispose Luid1#
Dispose Privileg1#
Dispose Token#
Dispose Newstate#
Dispose Out#
Dispose Größe#
Ab hier wird abgespeichert
Let Schlüssel$=
Let Savefile$=C:REGHIVE
Dim Handle#,4
Let Fehler&=@Regopenkeyex($80000001,@Addr(Schlüssel$),0,$F003f,Handle#)...hole das Handle des Hive...
Addstring Errorcode Handle des Hive holen: +@Str$(Fehler&)
Let Handle&=@Long(Handle#,0)..Handle für Startpunkt des Hives wird ausgelesen....
Let Fehler&=@Regsavekey(Handle&,@Addr(Savefile$),0)...speichere den Hive unter C:REGHIVE...
Addstring Errorcode Hive abspeichern: +@Str$(Fehler&)
Let Fehler&=@Regclosekey(Handle&)...mach die Kiste zu..
Addstring Errorcode Schlüssel schließen: +@Str$(Fehler&)
Dispose Handle#
Windowtitle Abspeichern des Registryschlüssels Current_User in binärer Form
Windowstyle 31
Window 0,0-640,440
Let Button&=@Createbutton(%Hwnd,Gespeicherten Hive löschen?,20,300,250,30)
@Editbox(API-Rückmeldungen,1)
Chdir C:\

If Findfirst$(REGHIVE)=

    Enablewindow Button&,0

Endif

While 0=0

    Waitinput

    If @Getfocus(Button&)

        Let Io%=%Ioresult
        Assign #1,C:\REGHIVE
        Setfattr #1,$20
        Erase #1
        Chdir C:\

        If Findfirst$(REGHIVE)=

            @Messagebox(Hive wurde gelöscht!,Hinweis,64)
            Enablewindow Button&,0

        Endif

    Endif

Wend

 
16.07.2007  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.600 Betrachtungen

Unbenanntvor 0 min.
Georg Teles26.03.2023
Andre Rohland31.01.2018
E.T.25.02.2013
Julian Schmidt30.06.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie