 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Kai
Anmeldungsdatum: 08.01.2008 Beiträge: 3
|
Verfasst am: 08.01.2008, 11:27 Titel: auf die registry zugreifen/einzelnen wert löschen |
|
|
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 |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 08.01.2008, 15:08 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.01.2008, 15:31 Titel: |
|
|
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 |
|
 |
Kai
Anmeldungsdatum: 08.01.2008 Beiträge: 3
|
Verfasst am: 08.01.2008, 16:13 Titel: |
|
|
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:
*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 |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 08.01.2008, 18:18 Titel: |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 08.01.2008, 18:32 Titel: |
|
|
@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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.01.2008, 18:51 Titel: |
|
|
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.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 08.01.2008, 21:41 Titel: |
|
|
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 )
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
Das schreibe ich nicht, um zu dokumentieren, was mir nicht gelungen ist, sondern als Warnung!
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
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 |
|
 |
Kai
Anmeldungsdatum: 08.01.2008 Beiträge: 3
|
Verfasst am: 08.01.2008, 22:39 Titel: |
|
|
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 |
|
 |
oldirty

Anmeldungsdatum: 04.08.2005 Beiträge: 65
|
Verfasst am: 09.01.2008, 00:17 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|