Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

auf die registry zugreifen/einzelnen wert löschen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Kai



Anmeldungsdatum: 08.01.2008
Beiträge: 3

BeitragVerfasst am: 08.01.2008, 11:27    Titel: auf die registry zugreifen/einzelnen wert löschen Antworten mit Zitat

hallo commumity,
ich bin neu hier und bräuchte einen befehl um einen eintrag in der registry zu löschen...

soweit ich weiß muss man das mit "DEL" bzw. "ERASE" machen..
aber irgendwie bekomme ich das nicht hin und hab heute nacht frustriert aufgehört....

also nun die frage an euch:
wie müsste der befehl aussehen wenn ich zum beispiel im ordner test (->
HKEY_CLASSES_ROOT_TEST) die datei "y" löschen möchte..

gruß kai
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 08.01.2008, 15:08    Titel: Antworten mit Zitat

Hey,
vielleicht hilft dir das hier weiter:
http://www.vbarchiv.net/vbapi/kat_Registry.html
Ist halt leider in VB, aber das "Übersetzen" wird ein Kinderspiel.

MfG Caran[/u]
_________________
Eine Erkenntnis von heute kann die Tochter eines Irrtums von gestern sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.01.2008, 15:31    Titel: Antworten mit Zitat

wenn du es lieber etwas tutorial-artiger haben möchtest, hab ich hier auch noch ein tutorial: http://home.arcor.de/visualbasicforum/vbtutorials.htm
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kai



Anmeldungsdatum: 08.01.2008
Beiträge: 3

BeitragVerfasst am: 08.01.2008, 16:13    Titel: Antworten mit Zitat

also erstmal vielen dank..
ich werde mir die sachen heute abend mal ansehen und hoffendlich verstehen...(wenn nicht steht hier morgen wieder nen post^^)

gruß kai

*edit*
ok ich verstehe leider nur spanisch...
aber es war nicht ganz umsonst weil ich jetzt etwas mehr über den aufbau der registry weiß...

ok dann mal eine andere frage..
angenommen ich wöllte die datei "test.txt" welche in c:\ liegt löschen
dann müsste der code doch so aussehen:
Code:
kill "c:\test.txt"


*edit2*
ja so geht der^^..
hab jetzt damit auch nen bisschen herumprobiert aber bekomme den reg eintrag nicht damit gelöscht.. vll hab ich dabei aber auch nen fehler gemacht....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 08.01.2008, 18:18    Titel: Antworten mit Zitat

Zitat:

wie müsste der befehl aussehen wenn ich zum beispiel im ordner test (->
HKEY_CLASSES_ROOT_TEST) die datei "y" löschen möchte..


also, format c: ist einfacher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 08.01.2008, 18:32    Titel: Antworten mit Zitat

@Kai:
Die Registry ist was anderes als eine Datei. Eine Datei kannst du mit KILL löschen. Für die Windows-Registry schaue die beiden Links für VB. Sollte wirklich leicht sein, zu übersetzen, da sich die BASIC-Dialekte recht stark ähneln und die Funktionsaufrufe die gleichen sein dürften, weil die WinAPI eine einzige Schnittstellle ist, deren Parameter und Funktionsnamen quasi in jeder Sprache gleich sind.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.01.2008, 18:51    Titel: Antworten mit Zitat

wenn du nicht auf schon existierende sturkturen zurückgreifen musst (z.B. das verknüpfen einer dateiendung mit deinem selbsterstellten programm) wäre es vielleicht auch ratsamer, lieber gleich dateien statt der registry zu benutzen. zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.01.2008, 21:41    Titel: Antworten mit Zitat

Hier hat oldirty beschrieben, wie Strings aus der Registry gelesen werden können
und wie man Strings dort hineinschreiben kann.
("" ist ein String und fast wie löschen happy )
Mein Tut für den Umgang mit der Registry ist leider nie fertig geworden, weil
ich bei den Beispielprogrammen dazu meine Registry total zerschossen habe R.I.P.
Das schreibe ich nicht, um zu dokumentieren, was mir nicht gelungen ist, sondern als Warnung! Ja!
Der Umgang mit der Registry ist alles andere als einfach!
Michael Frey hat Folgendes geschrieben:
..laßt doch die Registry in Ruhe..
..und das nicht ganz zu Unrecht zwinkern
Wenn du also nicht fit bist im Umgang mit der Registry: Finger weg davon..
Wenn du nicht fit bist im Umgang mit dem WinAPI: Erst recht Finger von die Dinger..
Wenn du mutig genug bist, nur zu, denn eine Neuinstallation dauert höchstens ne Stunde..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kai



Anmeldungsdatum: 08.01.2008
Beiträge: 3

BeitragVerfasst am: 08.01.2008, 22:39    Titel: Antworten mit Zitat

oh..
das sieht interessant aus...

ich denke nicht das ich die registry zerschießen werde..
dank vmware^^
nunja ich werd mich dann mal morgen nach der schule dransetzen..

gruß kai

ps: danke an alle
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
oldirty



Anmeldungsdatum: 04.08.2005
Beiträge: 65

BeitragVerfasst am: 09.01.2008, 00:17    Titel: Antworten mit Zitat

Hier mein finaler Code:

Code:

'http://www.freebasic.net/forum/viewtopic.php?t=2293
'http://www.freebasic.net/forum/viewtopic.php?t=4062
'http://www.freebasic.net/forum/viewtopic.php?t=6640

#include once "windows.bi"
#include once "win/shellapi.bi"
#include once "win/winreg.bi"
'#inclib "advapi32"

             
Dim shared RegVal As ZString * 1024
dim shared root as hkey

Function myRegGetStr(byval root As HKEY, byval sub_ As ZString ptr, _
                     byval name_ As ZString ptr, byval out_ As ZString ptr) as string
  Dim hKey_ As HKEY
  dim as long rc,KeyValType
  Dim KeyData As Long
  RegVal=""
    If RegOpenKeyEx(root, sub_, 0, KEY_READ, @hKey_) = ERROR_SUCCESS Then
        Dim l As DWORD = 512
        Dim t As DWORD
        If RegQueryValueEx(hKey_, name_, NULL, @t, out_, @l) <> ERROR_SUCCESS Then Return "Fail"
      If t = REG_SZ Then 
         out_[512 - 1] = 0
            RegVal=right$(RegVal,len(RegVal)-1)
            RegVal=left$(RegVal,instr(RegVal,chr$(34))-1)
      end if
      if t = REG_DWORD then
            rc = RegQueryValueEx(hKey_, name_, NULL, @t, out_, @l)
            print rc
            if rc <> ERROR_SUCCESS then
                If rc = ERROR_FILE_NOT_FOUND Then RegVal="Key not found"
            else
                RegVal=str$(asc(*out_))
            end if
        end if
        if t = REG_BINARY then
            rc = RegQueryValueEx(hKey_, name_, NULL, @t, out_, @l)
            if rc <> ERROR_SUCCESS then
                 print rc
                If rc = ERROR_FILE_NOT_FOUND Then RegVal="Key not found"
            else
                RegVal=left$(str$(*out_),l)
                dim as string RegValTmp,RegValTmp2,RegValTmp3
                RegValTmp =""
                RegValTmp2=""
                RegValTmp3=""
                dim x as integer
                for x=0 to l-1
                    RegValTmp=mid$(RegVal,1+x,1)
                    RegValTmp2=hex$(asc(RegValTmp))
                    if len(RegValTmp2)=1 then
                        RegValTmp2="0"+RegValTmp2
                    end if
                    RegValTmp3=RegValTmp3+RegValTmp2+" "
                next x
                RegVal=rtrim$(RegValTmp3)
            end if
        end if
        RegCloseKey(hKey_)
    else
        RegVal="Key not found"
    End If
    Return RegVal
End Function

'*************************************************************
'
'  RegDelnodeRecurse()
'
'  Purpose:    Deletes a registry key and all it's subkeys / values.
'
'  Parameters: hKeyRoot    -   Root key
'              lpSubKey    -   SubKey to delete
'
'  Return:     TRUE if successful.
'              FALSE if an error occurs.
'
'*************************************************************

Function RegDelnodeRecurse (Byval hKeyRoot As HKEY, Byval lpSubKey As LPTSTR) As BOOL
  Dim As LPTSTR lpEnd
  Dim As Long lResult
  Dim As DWORD dwSize
  Dim As TCHAR szName(0 To MAX_PATH - 1)
  Dim As HKEY hKey
  Dim As FILETIME ftWrite
    ' First, see if we can delete the key without having
    ' to recurse.
    lResult = RegDeleteKey(hKeyRoot, lpSubKey)
    If (lResult = ERROR_SUCCESS) Then Return TRUE
    lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, @hKey)
    If lResult <> ERROR_SUCCESS Then
      If lResult = ERROR_FILE_NOT_FOUND Then
        Print "Key not found"
        Return TRUE
      Else
        Print "Error opening key"
        Return FALSE
      End If
    End If
    ' Check for an ending slash and add one if it is missing.
    lpEnd = lpSubKey + lstrlen(lpSubKey)
    If *(lpEnd - 1) <> Asc("\") Then
      *lpEnd =  Asc("\")
      lpEnd += 1
      *lpEnd =  0
    End If
    ' Enumerate the keys
    dwSize = MAX_PATH
    lResult = RegEnumKeyEx(hKey, 0, @szName(0), @dwSize, NULL, NULL, NULL, @ftWrite)
    If lResult = ERROR_SUCCESS Then
      Do
        lstrcpy (lpEnd, @szName(0))
        If RegDelnodeRecurse(hKeyRoot, lpSubKey) = 0 Then Exit Do
        dwSize = MAX_PATH
        lResult = RegEnumKeyEx(hKey, 0, @szName(0), @dwSize, NULL, NULL, NULL, @ftWrite)
      Loop While lResult = ERROR_SUCCESS
    End If
    lpEnd -= 1
    *lpEnd = 0
    RegCloseKey (hKey)
    ' Try again to delete the key.
    lResult = RegDeleteKey(hKeyRoot, lpSubKey)
    If lResult = ERROR_SUCCESS Then Return TRUE
    Return FALSE
End Function


'********************************************************************
'Wert auslesen
screen 18
dim programm as string
print myRegGetStr(HKEY_CLASSES_ROOT,"http\shell\open\command", "", @RegVal)
'Gibt beim DesktopPC opera.exe zurück, auf LapTop "IExplorer...

Programm=myRegGetStr(HKEY_CLASSES_ROOT,"http\shell\open\command", "", @RegVal) 
Shell'Execute (0, "", Programm, "www.google.de", "", SW_SHOWNORMAL)

print myRegGetStr(HKEY_LOCAL_MACHINE, "Software\Fraps2", "Capture Key", @RegVal)
'Gibt auf Desktop-PC 121 zurück

Print myRegGetStr(HKEY_LOCAL_MACHINE, _
    "SOFTWARE\H+BEDV\Workstation\AntiVir PersonalEdition Premium V 7", "ID", @RegVal)
'Gibt auf Laptop 150 zurück

print myRegGetStr(HKEY_LOCAL_MACHINE, "SOFTWARE\LapLink\Track", "InstallDate", @RegVal)
'Gibt auf Laptop 5A A6 0C 43 zurück


sleep

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz