Deutsch
Stammtisch & Café

RegLoadKey.

 


Beschreibung:

RegLoadKey erstellt einen Unterschlüssel unter HKEY_USER oder HKEY_LOCAL_MACHINE aus der Angegebenen Datei. Unter NT-basierten Windowssystemen ist das Privileg SeRestorePrivilege erforderlich, das aktiviert werden muß.




Deklaration:

DEF @RegLoadKey(3)!ADVAPI32,RegLoadKeyA




Parameter:

1.Parameter: Ein mit RegConnectRegistry erzeugtes Handle eines Registryschlüssels als LongInt oder einer von folgenden vordefinierten Werten: =>
-HKEY_LOCAL_MACHINE = $80000002
-HKEY_USERS = $80000003
2.Parameter: Adresse eines Unterschlüssels oder Bereichsvariable mit einem Unterschlüssel, der erzeugt werden soll.
3.Parameter: Adresse eines Strings mit dem Dateinamen oder Bereichsvariable mit dem Dateinamen der Registrydatei, die geladen werden soll. Diese Datei hat das Format der mit der API RegSaveKey erzeugten Dateien.



Rückgabewert:

0 bei Erfolg, bei Misserfolg ein Wert <>0 (Fehlercode).


Beispiele:

Quelltext für Profan², Version 7.5:
Declare NewState#,Luid1#,Luid2#,Privileg1#,Privileg2#,System$,Token&,Fehler&,token#,Userliste&
Declare BUFFER#,OLDVALUE#,BUTTON&
Declare Luid4#,Luid3#,Privileg4#,Privileg3#,OUT#,größe#,Zahl1&,zahl2&
Declare Username$,ENDE&
Declare Handle&
Declare REG$
Declare Zähler&
Declare WINVER!
Declare Zähler%
declare Name#
declare Ergebnis#,Useranzahl&
Declare USERDAT$
Declare name3#,size3#,Usereingabe$,Oberschlüssel$,ProfileList$
declare Error&,Datei$,OpenError&
declare Handle#,Savefile$
declare Key#
declare Size#
declare Wert#,Wert2#
Declare Oberschlüssel&,Username2$,Möglichkeit%
Declare reg2$,ProfilePfad$,Find$
Declare ENVERGEBNIS$,Buffer#,ENVErgebnis#
Declare OS#,WinVer&,Winver$
Struct OSVERSIONINFO = dwOSVersionInfoSize&,dwMajorVersion&,dwMinorVersion&,dwBuildNumber&,dwPlatformId&,szCSDVersion$(128)
dim Ergebnis#,100
dim Name#,256
dim Handle#,4
dim Key#,256
dim Size#,1
dim Wert#,4
Dim Wert2#,256
Dim OS#,OSVERSIONINFO
API Declarationen
DEF @ExpandEnvironmentStrings(3)!"kernel32","ExpandEnvironmentStringsA"
DEF @GetLastError(0)!"kernel32","GetLastError" Liefert letzten API Fehler.
def @RegOpenKeyEx(5) !"ADVAPI32","RegOpenKeyExA" Liefert Handle eines Registryschlüssels und öffnet ihn.
def @RegCloseKey(1) !"ADVAPI32","RegCloseKey" Schließt eine geöffneten Registryschlüssel.
def @RegSetValueEx(6) !"ADVAPI32","RegSetValueExA" Schreibt einen Wert in einen Registrykey.
def @RegEnumKey(4) !"ADVAPI32","RegEnumKeyA" Listet Registryschlüssel auf.
DEF @RegLoadKey(3)!"ADVAPI32","RegLoadKeyA" Lädt einen Hive in die Registry.
DEf @RegUnLoadKey(2)!"ADVAPI32","RegUnLoadKeyA" Entfernt einen mit RegLoadKey geladenen Hive aus der Registry.
DEF @RegCreateKey(3)!"ADVAPI32","RegCreateKeyA" Schlüssel erstellen
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
DEF &Ver_Platform_Win32_Windows 1
DEF &Ver_Platform_Win32_NT 2
Windows-Version ermitteln
OS#.dwOSVersionInfoSize& = 148
@External("Kernel32","GetVersionExA",OS#)
LET Winver& = 8

If OS#.dwPlatformId& = &Ver_Platform_Win32_Windows

    If OS#.dwMajorVersion& = 4

        Case OS#.dwMinorVersion& = 0  : Winver& = 1
        Case OS#.dwMinorVersion& = 10 : Winver& = 2
        Case OS#.dwMinorVersion& = 90 : Winver& = 3

    Endif

ElseIf OS#.dwPlatformId& = &Ver_Platform_Win32_NT

    Case OS#.dwMajorVersion& = 3 : Winver& = 4
    Case OS#.dwMajorVersion& = 4 : Winver& = 5
    Case OS#.dwMajorVersion& = 5 : Winver& = 6
    Case OS#.dwMinorVersion& = 1 : Winver& = 7

Endif

Dispose OS#
case WinVer& = 1: Let Winver$="Windows95"
case WinVer& = 2: Let Winver$="Windows98"
case WinVer& = 3: Let Winver$="WindowsME"
case WinVer& = 4: Let Winver$="WindowsNT3.5"
case WinVer& = 5: Let Winver$="WindowsNT4"
case WinVer& = 6: Let Winver$="Windows2000"
case WinVer& = 7: Let Winver$="WindowsXP"
case WinVer& = 8: Let Winver$="Unbekannte Windowsversion"

PROC VariableErsetzenInString

    Parameters ZuValidierenderText$
    der interne Puffer muß das gesamte Environment abdecken können
    sonst gibt es einen Fehler bezüglich der Bereichsgrenze
    Dim Buffer#,4
    Dim ENVErgebnis#,256
    LONG Buffer#,0=256
    LET ENVERGEBNIS$=""
    ADDSTRING "ExpandEnvironmentStrings wird mit dem String "+ZuValidierenderText$+" gestartet!"
    LET FEHLER&=@ExpandEnvironmentStrings(@addr(ZuValidierenderText$),ENVErgebnis#,BUFFER#)
    Let ENVERGEBNIS$= @String$(ENVErgebnis#,0)
    ADDSTRING "ExpandEnvironmentStrings Ergebnis: "+@str$(Fehler&)
    ADDSTRING "ExpandEnvironmentStrings erzeugter String: "+ENVERGEBNIS$
    DISPOSE Buffer#
    Dispose ENVErgebnis#
    RETURN ENVERGEBNIS$

endproc

Proc Benutzerlisten

    string Key#,0="" Kein Unterschlüssel.
    @RegOpenKeyEx($80000003,Key#,0,$F003F,Handle#) Schlüssel HKEY_USERS wird geöffnet
    Let Handle&=@Long(Handle#,0)
    LET ZÄHLER%=0
    LET ERROR&=0
    Ziel der Schleife: Schreibweise des Profils .DEFAULT ermitteln:

    while @equ(Error&,0) Bis kein neuer Wert gefunden wird...

        let Error&=@RegEnumKey(Handle&,Zähler%,Ergebnis#,100) Schreibe gelisteten Schlüssel in Bereich Ergebnis#.
        let USEREINGABE$=@string$(Ergebnis#,0) Schreibe Schlüssel in String
        case @and(ERROR&=0,@Instr("DEFAULT",@upper$(USEREINGABE$))>0) : @addstring(Userliste&,Usereingabe$) Schreibe Schlüssel .DEFAULT in Listboxliste
        inc Zähler%

    endwhile

    @RegCloseKey(Handle&) HKEY_USERS wird geschlossen.

    IF WINVER&<4 Wenn Betriebssystem Windows9x/ME...

        Addstring "Windows9x/ME System gefunden"
        Let ProfileList$="SoftwareMicrosoftWindowsCurrentVersionProfileList" Dort befindet sich eine Liste mit in Windows vorhandenen Usern unter Windows9x/ME
        LET USERDAT$="USER.DAT" So heißt der Hive unter Windows9x/ME.
        LET REG$="SoftwareMicrosoftWindowsCurrentVersion" Dort befinden sich RUN und POLICIES Eintrage unter Windows9x/ME.
        string Key#,0=ProfileList$
        LET Fehler&=@RegOpenKeyEx($80000002,Key#,0,$F003F,Handle#) Es wird versucht, die Profileliste (Root HKEY_LOCAL_MACHINE) unter Windows9x/ME zu öffnen.
        LET ZÄHLER%=0
        LET ERROR&=0
        Die Unterschlüssel sind hier die Profilnamen, sie werden nun gelistet und in eine Listbox geschrieben...

        while @equ(Error&,0)

            let Error&=@RegEnumKey(@Long(Handle#,0),Zähler%,Ergebnis#,100)
            casenot Error& : @addstring(Userliste&,@string$(Ergebnis#,0))
            inc Zähler%

        endwhile

        LET USERANZAHL&=Zähler%-1
        @RegCloseKey(@Long(Handle#,0))

    else

        Addstring "NT System gefunden"
        Für die folgenden Registryvorgänge müssen sich unter NT-basierten Systemen erst die Rechte geholt werden.
        Auch für einen Administrator sind diese Rechte nicht unter jedem System aktiviert.
        Hier die APIS zum setzen der Privilegien:
        DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
        DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
        DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
        DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
        DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
        Dimensionierung der Bereichsvariablen
        dim token#,4
        DIM NewState#,16
        DIM Luid1#,8
        DIM Luid2#,8
        DIM Privileg1#,256
        DIM Privileg2#,256
        DIM Luid3#,8
        DIM Luid4#,8
        DIM Privileg3#,256
        DIM Privileg4#,256
        DIM BUFFER#,4
        DIM OLDVALUE#,256
        DIM OUT#,256
        Dim Größe#,4
        String Privileg1#,0="SeBackupPrivilege"
        String Privileg2#,0="SeRestorePrivilege" Privileg für Regloadkey
        String Privileg3#,0="SeTakeOwnershipPrivilege" Vielleicht auch noch nötig?
        String Privileg4#,0="SeSystemProfilePrivilege" Vielleicht auch noch nötig?
        Long NewState#,0=1 Nur ein Privileg soll geändert werden
        Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
        Let SYSTEM$="" Wenn Leerstring, dann lokaler Computer.
        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 "Letzter Fehler: "+@str$(@GetLastError()) Welcher Fehler trat zuletzt auf?
        let token&=@long(token#,0) Das Handle des Einstellprozesses wird ausgelesen.
        Addstring "Fehlercode OpenProcessToken: "+@str$(Fehler&) Wenns geklappt hat, dann 1.
        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.
        LET FEHLer&=@LookupPrivilegeValue(@addr(SYSTEM$),Privileg2#,LUID2#)  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.
        LET FEHLer&=@LookupPrivilegeValue(@addr(SYSTEM$),Privileg3#,LUID3#) 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.
        LET FEHLer&=@LookupPrivilegeValue(@addr(SYSTEM$),Privileg4#,LUID4#) 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.
        Der Luid für das erste Privileg wird übertragen
        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))
        @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.
        Der Luid für das zweite Privileg wird übertragen
        Byte NewState#,4=@Byte(Luid2#,0)
        Byte NewState#,5=@Byte(Luid2#,1)
        Byte NewState#,6=@Byte(Luid2#,2)
        Byte NewState#,7=@Byte(Luid2#,3)
        Byte NewState#,8=@Byte(Luid2#,4)
        Byte NewState#,9=@Byte(Luid2#,5)
        Byte NewState#,10=@Byte(Luid2#,6)
        Byte NewState#,11=@Byte(Luid2#,7)
        LET FEHLER&=@AdjustTokenPrivileges(Token&,0,NewState#,0,0,0) Das Privileg wird aktiviert. Alle nicht benötigten Werte können auch 0 sein!
        Addstring "Fehlercode AdjustTokenPrivileges: "+@str$(Fehler&) Wenn geklappt hat 1.
        Der Luid für das dritte Privileg wird übertragen
        Byte NewState#,4=@Byte(Luid3#,0)
        Byte NewState#,5=@Byte(Luid3#,1)
        Byte NewState#,6=@Byte(Luid3#,2)
        Byte NewState#,7=@Byte(Luid3#,3)
        Byte NewState#,8=@Byte(Luid3#,4)
        Byte NewState#,9=@Byte(Luid3#,5)
        Byte NewState#,10=@Byte(Luid3#,6)
        Byte NewState#,11=@Byte(Luid3#,7)
        LET FEHLER&=@AdjustTokenPrivileges(Token&,0,NewState#,0,0,0) Das Privileg wird aktiviert. Alle nicht benötigten Werte können auch 0 sein!
        Addstring "Fehlercode AdjustTokenPrivileges: "+@str$(Fehler&) Wenn geklappt hat 1.
        Der Luid für das vierte Privileg wird übertragen
        Byte NewState#,4=@Byte(Luid4#,0)
        Byte NewState#,5=@Byte(Luid4#,1)
        Byte NewState#,6=@Byte(Luid4#,2)
        Byte NewState#,7=@Byte(Luid4#,3)
        Byte NewState#,8=@Byte(Luid4#,4)
        Byte NewState#,9=@Byte(Luid4#,5)
        Byte NewState#,10=@Byte(Luid4#,6)
        Byte NewState#,11=@Byte(Luid4#,7)
        LET FEHLER&=@AdjustTokenPrivileges(Token&,0,NewState#,0,0,0) Das Privileg wird aktiviert. Alle nicht benötigten Werte können auch 0 sein!
        Addstring "Fehlercode AdjustTokenPrivileges: "+@str$(Fehler&) Wenn geklappt hat 1.
        Addstring "Letzter Fehler: "+@str$(@GetLastError()) Letzter Fehler wird ausgegeben
        Alle nicht mehr benötigten Bereiche werden gelöscht.
        Dispose Luid1#
        Dispose Luid2#
        Dispose Privileg1#
        Dispose Privileg2#
        Dispose Luid3#
        Dispose Luid4#
        Dispose Privileg3#
        Dispose Privileg4#
        Dispose NewState#
        Dispose OldValue#
        Dispose Buffer#
        dispose OUT#
        Dispose Größe#
        OK, wenn die Privilegien überhaupt vorhanden waren, bestehen jetzt die Rechte für Hive-Operationen.
        LET REG$="SoftwareMicrosoftWindowsCurrentVersion" Dort befinden sich RUN und POLICIES Eintrage unter Windows2000/NT/XP.
        LET USERDAT$="NTUSER.DAT" So heißt der Hive unter Windows2000/NT/XP.
        Let ProfileList$="SoftwareMicrosoftWindows NTCurrentVersionProfileList" Dort befindet sich eine Liste mit in Windows vorhandenen Usern unter Windows2000/NT/XP.
        LET PROFILEPFAD$=@upper$(@readini$("HKEY_2",Profilelist$,"ProfilesDirectory")) Pfad der Profile wird aus der Registry geholt
        Case PROFILEPFAD$="" : LET PROFILEPFAD$=@left$($WINPATH,2)+"Dokumente und Einstellungen" Wenn in Registry kein Pfad gefunden wurde, nehme "C:Dokumente und Einstellungen" als Profilepfad
        VariableErsetzenInString PROFILEPFAD$
        LET PROFILEPFAD$=@$(0)
        ADDSTRING "Ausgelesener Profilepfad: "+PROFILEPFAD$
        Die User werden gelistet
        CHDIR PROFILEPFAD$
        Let FIND$=@FINDFIRST$(PROFILEPFAD$+""+"*") Suche Dateien und Ordner im Profilpfad

        IF @and(FIND$<>"",Left$(FIND$,1)<>"[") Wenn eine Datei gefunden wurde...

            LET Find$="." ...lösche den Namen

        elseif @and(FIND$<>"",Left$(FIND$,1)="[") Wenn aber ein Ordner gefunden wurde..

            LET Find$=@TRANSLATE$(FIND$,"[","") ...lösche die eckigen Klammern im Ordnernamen
            LET Find$=@TRANSLATE$(FIND$,"]","") ...lösche die eckigen Klammern im Ordnernamen

        endif

        While FIND$<>"" Solange ein Ordner gefunden wurde...

            IF @and(FIND$<>".",FIND$<>"..") ...und es wirklich ein Ordner ist...

                @ADDSTRING(Userliste&,FIND$) ...schreibe den Ordner in die Listboxliste.

            endif

            Let FIND$=FINDNEXT$() ...suche nächste Datei / nächsten Ordner

            IF @and(FIND$<>"",Left$(FIND$,1)<>"[") ...Wenn eine Datei gefunden wurde...

                LET Find$="." ...lösche den Namen

            elseif @and(FIND$<>"",Left$(FIND$,1)="[") ...Wenn aber ein Ordner gefunden wurde..

                LET Find$=@TRANSLATE$(FIND$,"[","") ...lösche die eckigen Klammern im Ordnernamen
                LET Find$=@TRANSLATE$(FIND$,"]","") ...lösche die eckigen Klammern im Ordnernamen

            endif

        wend

    endif

EndProc

Proc Eintraq_erstellen

    Clearlist

    IF WINVER&<4 Wenn Betriebssystem Windows9x/ME...

        IF USERNAME$<>""

            LET USERNAME2$=Username$+""
            LET Oberschlüssel&=$80000003 Root Schlüssel HKEY_USERS
            let OBERSCHLÜSSEL$="HKEY_3" Root Schlüssel HKEY_USERS
            Let Datei$=""

            If @trim$(@upper$(Username$))<>".DEFAULT" Wenn nicht das .DEFAULT Profil gewählt wurde..

                Let Datei$=@readini$("HKEY_2",Profilelist$+""+Username$,"ProfileImagePath")+""+USERDAT$ ...lese den Hive für diesen User aus...
                VariableErsetzenInString Datei$
                LET DATEI$=@$(0)

                IF @FindFirst$(Datei$)<>""

                    Let OpenError&=@RegLoadKey($80000003,@addr(Username$),@addr(Datei$)) Versuche, Hive in die Registry zu laden

                else

                    Let OpenError&=-110

                endif

            endif

            Addstring "Errorcode beim Laden des Hives: "+@str$(OPENERROR&) Wenn Fehler, ist Openerror&>0!
            Print "REGEDIT wird gestartet!"
            @winexec("REGEDIT.EXE",1)
            Color 12,15
            Print "Zum Weitermachen bitte in Hauptfenster klicken!"
            Print "RegEdit vorher unbedingt schließen!!!!!"
            Color 0,15
            WAITINPUT

        else

            dispose Handle#
            dispose Key#
            dispose Wert#
            dispose Name#
            dispose Size#
            Dispose wert2#
            end

        endif

        else Wenn Betriebssystem Windows2000/XP...(WindowsNT geht eventuell nicht!!!)

        IF USERNAME$<>"" Wenn ein Name ausgewählt wurde

            LET USERNAME2$=Username$+""
            LET Oberschlüssel&=$80000003 Root Schlüssel HKEY_USERS
            let OBERSCHLÜSSEL$="HKEY_3" Root Schlüssel HKEY_USERS
            Let Datei$=""

            If @trim$(@upper$(Username$))<>".DEFAULT" Wenn nicht das .DEFAULT Profil gewählt wurde..

                Let Datei$=ProfilePfad$+""+USERNAME2$+"NTUSER.DAT" Dort befindet sich die Datei NTUSER.DAT für den gewählten User

                IF @FindFirst$(Datei$)<>""

                    Let OpenError&=@RegLoadKey($80000003,@addr(Username$),@addr(Datei$)) Versuche, Hive in die Registry zu laden!

                else

                    Let OpenError&=-110

                endif

            endif

            Addstring "Errorcode beim Laden des Hives: "+@str$(OPENERROR&) Wenn Fehler, ist Openerror&>0!
            PRINT "REGEDIT wird gestartet!"
            @winexec("REGEDIT.EXE",1) Nur Kontrolle, was in der Registry passiert!
            Color 12,15
            Print "Zum Weitermachen bitte in Hauptfenster klicken!"
            Print "RegEdit vorher unbedingt schließen!!!!!"
            Color 0,15
            WAITINPUT

        else

            dispose Handle#
            dispose Key#
            dispose Wert#
            dispose Name#
            dispose Size#
            Dispose wert2#
            LET FEHLER&=@CloseHandle(Token&) Der Einstellprozess wird geschlossen.
            Addstring "Fehlercode CloseHandle: "+@str$(Fehler&) Wenn erfolgreich, dann 1.
            end

        endif

    endif

endproc

Windowstyle 31+512
Windowtitle "Testprogramm 1"
Window 0,0-640,390
Let Userliste&=@Createlistbox(%HWND,"",20,200,300,100)
LET BUTTON&=@CREATEBUTTON(%HWND,"User wählen",320,200,200,30)
Print "Das Programm soll die Registry eines beliebigen"
Print "Users öffnen und einen Eintrag unter RUNONCE erstellen."
Benutzerlisten

While %MENUITEM<>-2

    Waitinput

    IF @Getfocus(Button&)

        LET USERNAME$=@GetString$(Userliste&,@GetCursel(Userliste&))
        Eintraq_erstellen
        Usecursor 2
        Addstring "Gewählter User: "+Username$
        LET REG2$=Username2$+REG$+"RunOnce"
        Addstring "Errorcode Schlüssel erstellen und laden: "+@str$(@RegCreateKey($80000003,@addr(Reg2$),Handle#)) Wenn Schlüssel RunOnce nicht vorhanden ist, wird er erzeugt (ist ja nicht immer da).
        long Size#,0=256
        string Name#,0="Test"
        string Wert2#,0="Explorer.EXE"
        Addstring "Errorcode Schlüssel verändern: "+@str$(@RegSetValueEx(@Long(Handle#,0),Name#,0,1,Wert2#,256)) Der Eintrag, der den Explorer startet, wird erstellt.
        Addstring "Errorcode Schlüssel schließen: "+@str$(@RegCloseKey(@Long(Handle#,0))) RunOnce wird geschlossen.

        IF OPENERROR&=-110

            Print "RunOnce Eintrag konnte nicht erzeugt werden!"
            @messagebox("Kein Hive gefunden. RunOnce Eintrag konnte nicht erstellt werden!","Hinweis",64)

        else

            Print "RunOnce Eintrag wurde erzeugt!"

        endif

        LET ENDE&=1

        IF @and(OPENERROR&=0,Datei$<>"") Nur wenn wirklich ein Hive geladen wurde (der Hive des Current Users ist ja immer geladen)..

            Addstring "Errorcode Handle des Hive holen: "+@str$(@RegOpenKeyEx($80000003,@addr(Username$),0,$F003F,Handle#)) ...hole das Handle des Hive...
            Let Handle&=@long(Handle#,0) ..Handle für Startpunkt des Hives wird ausgelesen....
            Addstring "Errorcode Schlüssel schließen: "+@str$(@RegCloseKey(Handle&)) ...mach "die Kiste" zu..
            LET Fehler&=@RegUnLoadKey($80000003,@addr(Username$))

            While Fehler&<>0

                Sleep 500
                LET Fehler&=@RegUnLoadKey($80000003,@addr(Username$))

            Wend

            Addstring "Errorcode Hive entladen: "+@str$(Fehler&)

        endif

        Usecursor 0
        @Editbox("API Rückmeldungen",1)
        PRINT ""

    endif

wend

Speicher freimachen!
dispose Handle#
dispose Key#
dispose Wert#
dispose Name#
dispose Size#
Dispose wert2#
END

[keywords:7873b3674f]
Hive laden Registry editieren Editor User Userprofile HKEY_USERS USER.DAT NTUSER.DAT hinzufügen
[/keywords:7873b3674f]
 
17.03.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.196 Betrachtungen

Unbenanntvor 0 min.
iF10.03.2011
E.T.19.02.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