Hallo.
Hat jemand einen vorgefertigten Nur-API-Code, mit dem man testen kann, ob ein Registrywert existiert? Ich verzweifel gerade an den vielen Parametern.:(
Hallo.
Hat jemand einen vorgefertigten Nur-API-Code, mit dem man testen kann, ob ein Registrywert existiert? Ich verzweifel gerade an den vielen Parametern.:(
Hab grad nur ein Stück Assemblercode parat und keine Zeit. Sollte aber auch so klar werden.
Zitatinvoke RegCreateKeyEx,HKEY_CURRENT_USER,addr szSimEd,0,addr szREG_SZ,0,KEY_WRITE or KEY_READ,0,addr hReg,addr lpdwDisp
.if lpdwDisp==REG_OPENED_EXISTING_KEY
Nein, Frank, das öffnet ja nur einen Schlüssel. Ich will aber wissen, ob ein Wert existiert. Für einen Schlüssel habe ich schon den Code...
Hilft dir das weiter ?
Def &HKEY_CLASSES_ROOT $80000000
Def &HKEY_CURRENT_USER $80000001
Def &HKEY_LOCAL_MACHINE $80000002
DEF &HKEY_USERS $80000003
declare Handle#
dim Handle#,4
declare Key#
dim Key#,100
string Key#,0="HARDWARE\DEVICEMAP\"
declare Ergebnis#
dim Ergebnis#,100
cls
@External("ADVAPI32","RegOpenKeyExA",&HKEY_LOCAL_MACHINE,Key#,0,8,Handle#) 'KEY_ENUMERATE_SUB_KEYS
'print long(handle#,0)
declare Zähler%,Error&
whilenot Error& '=259
let Error&=External("ADVAPI32","RegEnumKeyA",Long(Handle#,0),Zähler%,Ergebnis#,100)
'print error& '5 zugriff verweigert 6 Handle ungültig
casenot Error&:print @string$(Ergebnis#,0)
inc Zähler%
endwhile
External("ADVAPI32","RegCloseKey",Long(Handle#,0))
dispose Handle#
dispose Key#
dispose Ergebnis#
waitinput
end
Alles anzeigen
Nein.
Ich formulier die Frage mal anders: Wie kann ich, nachdem ich einen Registry-Schlüssel mit "RegOpenKeyex" geöffnet habe, einen Wert mit "RegGetValue" auslesen? Ich krieg das mit den Parametern nicht hin, bei mir kommt immer "Error 87", also Parameterfehler...
Jac
Nicht lauffähig:
DIM Wert2#,1
RegSize3& = 1
RegError7& = Regqueryvalueex(RegHandle3&, addr(UserFolder$), 0, addr(Type3&), Wert2#, addr(RegSize3&))
Dispose Wert2#
DIM Wert2#,RegSize3&+1
RegSize4& = RegSize3&
RegError7& = Regqueryvalueex(RegHandle3&, addr(UserFolder$), 0, addr(Type3&), Wert2#, addr(RegSize4&))
IF TYP3&=1
Wert3$ = String$(Wert2#,0)
elseif...
endif
Dispose Wert2#
Alles anzeigen
Ist RegError7& 0, hat alles geklappt. Ist RegError7& 2, ist der Wert nicht vorhanden.
Unter Type3& kannst du auslesen, welches Format der Wert hat (muss ja kein Nullterminierter String sein). Die erforderliche Größe des Buffers muss erst bestimmt werden, das macht der erste Aufruf.
Vielen Dank, ich probiers gleich heute abend aus.
Das Beispiel ist ja gar nicht lauffähig.:(
Das steht doch oben drüber!
Sich aus den Infos, die dort stehen, lauffähigen Code zu bauen ist doch kein Problem - oder?
Hab lauffähigen Code auf einem anderen Rechner, nicht auf dem hier.
Ja, ich sollte das hinkriegen...
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!