Français
Forum

Registry-Wert effacer

 

Jac
de
Lad
Hallöle, je veux une Wert dans qui Registry effacer. chez mir funzt cela folgende mais pas. Gibts là nen faute???
KompilierenMarqueSéparation
def @RegOpenKeyEx(5) !"ADVAPI32","RegOpenKeyExA"
def @RegDeleteValue(2) !"ADVAPI32","RegDeleteValueA"
def @RegCloseKey(1) !"ADVAPI32","RegCloseKey"
declare Handle#
dim handle#,4
declare Key#
dim Key#,100
string Key#,0="SoftwareMicrosoftWindowsCurrentVersionRun"  Pfad des Zielschlüssels
declare name#
dim Name#,100
string Name#,0="Fraps"  Name des zu löschenden Wertes
print @RegOpenKeyEx($80000001,Key#,0,1,Handle#) $80000001=HK_Current_User
print @RegDeleteValue(@Long(Handle#,0),Name#)
print @RegCloseKey(@Long(Handle#,0))
dispose Handle#
dispose Key#
dispose Name#
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
10.12.2005  
 



tu ouvres den Schlüssel avec KEY_QUERRY_VALUE Zugriff (lesen), veux mais écrivons. cela allez pas!
 
10.12.2005  
 




Jac
de
Lad
Hm, ok, et comment fais ego richtig???

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
10.12.2005  
 




Jac
de
Lad
Ahh! je habs déjà trouvé.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
10.12.2005  
 



Kurze Erklärung, ensuite tu viens bientôt peut-être selbst zurecht und dir um paramètre 4 de RegOpenKeyEx:

sous NT/2000/XP sommes viele Objekte (Handles) avec einer Zugriffskontrolle versehen. il faut beim Öfffnen des Handles dabei une Hexadezimale numéro angegen (Flag), qui angiebt, comment on cela Handle ouvrir voudrais (écrivons, lesen, Vollzugriff...). c'est ici qui paramètre 4 de RegOpenKeyEx. cela OS überprüft ensuite d'abord, si qui aufrufende User überhaupt cela droite en supplément hat, cela Handle dans qui angeforderten Art et Weise trop ouvrir. quelle Rechte qui jeweilige User geanau sur cela Handle besitzt, steht im Security-Descriptor qui dem jeweiligen objet zugeordnet ist. Hat il qui angeforderten Rechte pas, schlägt cela Öffnen des Handles fehl.

Wird später une Funktion avec dem Handle (Speicherbereich) fonctionnement (ici RegDeleteValue), schlägt cet Funktion ensuite fehl, si cela Handle pas dans entsprechender Weise ouvert wurde.

Arten de Zugriffsflags:
Microsoft teilt cet Flags, qui bestimmen, comment un Handle trop ouvrir ist, dans trois Arten ein=>

1.) Spezifische Rechte
chaque objet hat différent Eigenschaften et peux c'est pourquoi dans unterschiedlicher Art et Weise ouvert volonté. Spezifische Rechte pour Registryschlüssel sommes:
$1=KEY_QUERY_VALUE=Wert lesen
$2=KEY_SET_VALUE=Wert écrivons
$4=KEY_CREATE_SUB_KEY=Unterschlüssel erstellen
$8=KEY_ENUMERATE_SUB_KEYS=Unterschlüssel auflisten
$10=KEY_NOTIFY=Über Changements benachrichtigen
$20=KEY_CREATE_LINK=Symbolischen Link erstellen

2.) Generic Rechte
là es Zig Arten de zugriffsbeschränkten Handles gibt, wäre à peine un Programmierer dans qui situation, sich cela alles trop merken et überhaupt Programme trop entwickeln. il y a c'est pourquoi encore qui Generic Flags, qui pour chaque Handle juste et quasi une Umsetzung qui spezifischen Rechte et Standardrechte sommes:
$10000000=GENERIC_ALL=Vollzugriff
$80000000=GENERIC_READ=Kompletter Lesezugriff
$40000000=GENERIC_WRITE=Kompletter Schreibzugriff
$20000000=GENERIC_EXECUTE=Ausführen

3.)Standardrechte
Bien sûr gibt es aussi Flags, qui pour alle Handles juste sommes:
$40000=WRITE_DAC=Im Security-Descriptor Zugriffsrechte changement
$80000=WRITE_OWNER=Eigentümer eines Objektes changement (qui propriétaire hat toujours Avancé Zugriffsrechte).
$20000=READ_CONTROL=Auslesen qui bestehenden Zugriffsrechte aus einem Security-Descriptor
$10000=_DELETE=Löschen
$100000=SYNCHRONIZE=Warten, jusqu'à un Handle bereit ist

Ist alles im Prinzip entier simple - et comment du aus deinem Problem wohl gelernt la hâte, ist es aussi très très important cela trop savons, si on sur neueren Betriebssystemen Programme écrivons veux (sous 95/98/ME peux du cela getrost alles oublier qc)...

ici qui geänderte Code:
KompilierenMarqueSéparation
Def @Regopenkeyex(5) !"ADVAPI32","RegOpenKeyExA"
Def @Regdeletevalue(2) !"ADVAPI32","RegDeleteValueA"
Def @Regclosekey(1) !"ADVAPI32","RegCloseKey"
Declare Handle#
Dim Handle#,4
Declare Key#
Dim Key#,100
String Key#,0="SoftwareMicrosoftWindowsCurrentVersionRun" Pfad des Zielschlüssels
Declare Name#
Dim Name#,100
String Name#,0="Fraps" Name des zu löschenden Wertes
Print @Regopenkeyex($80000001,Key#,0,$2,Handle#)$80000001=HK_Current_User
Print @Regdeletevalue(@Long(Handle#,0),Name#)
Print @Regclosekey(@Long(Handle#,0))
Dispose Handle#
Dispose Key#
Dispose Name#
10.12.2005  
 



je hab justement gelesen, qui du XProfan besitzt. Ab Profan² 7 peux du chez APIs statt qui Bereiche aussi Adressen de Variablen angeben (seulement, si irgendwo un String zurückgeliefert wird, devrait du cela unterlassen):
KompilierenMarqueSéparation
Def @Regopenkeyex(5) !"ADVAPI32","RegOpenKeyExA"
Def @Regdeletevalue(2) !"ADVAPI32","RegDeleteValueA"
Def @Regclosekey(1) !"ADVAPI32","RegCloseKey"
Declare Handle&,Key$,Name$
LET Key$="SoftwareMicrosoftWindowsCurrentVersionRun" Pfad des Zielschlüssels
LET Name$="Fraps" Name des zu löschenden Wertes
Print @Regopenkeyex($80000001,@ADDR(Key$),0,$2,@ADDR(HANDLE&))$80000001=HK_Current_User
Print @Regdeletevalue(Handle&,@ADDR(Name$))
Print @Regclosekey(HANDLE&)
Wa
/a>
 
10.12.2005  
 



ah oui, encore quoi trop dem Thema...
qui Eigenart un Handle toujours avec Vollzugriff (ici KEY_ALL_ACCESS=$1F003F) trop ouvrir, sollte on possible son laisser. Arbeitet un User pas comme Admin, nimmt einem Windows solche faxen souvent très übel...
 
10.12.2005  
 




Jac
de
Lad
Aha.

Hm, comment dit, je hatte cela Problem déjà selbst trouvé. mais ensuite juste trop meiner prochain Frage: je suis sûrement pas qui einzige avec dem Problem, Registry-Werte trop lesen, qui eventuell pas vorhanden sommes, ensuite gibts nen bösen faute. Den peux on oui folgendermaßen tourner autour de:
KompilierenMarqueSéparation
proc ReadReg

    declare e%,e$
    e%=Set("Errorlevel",-1)
    e$=ReadIni$($(1),$(2),$(3))
    Set("Errorlvel",e%)
    Return e$

en
/a>

cela ging jusqu'à maintenant entier prima. eh bien habe je mais depuis aujourd'hui XProfan 9. là allez cela im Interpreter aussi encore problemlos, mais avec qui Runtime venons sur einmal deux böse faute. peux on cela avec APis realisieren? avec RegKeyOpenEx et so...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
10.12.2005  
 




Jac
de
Lad
@AH:

So, ici hat sich encore einiges geändert:

Relatif à la Einkürzen ist bien sûr. je machs mais quand même toujours d'abord avec Bereichen et kürze es ensuite un, wenns funktioniert. quand même merci.
maintenant habe je mais festgestellt, dass cela Problem à Set(Errorlevel... liegt. mais si du mir dire könntest, comment cela avec APIs funktioniert, serait sich cela Problem oui erübrigen.
Relatif à la Vollzugriff et so werde je mir trop Herzen prendre!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
10.12.2005  
 



So:
KompilierenMarqueSéparation
Beispiel zu api_RegQueryValueExA,ADVAPI32
Declare Handle#,Fehler&,Key#,Name#,Wert#,Size#,Type#
Def @Regopenkeyex(5) !"ADVAPI32","RegOpenKeyExA"
Def @Regqueryvalueex(6) !"ADVAPI32","RegQueryValueExA"
Def @Regclosekey(1) !"ADVAPI32","RegCloseKey"
Windowstyle 31
Windowtitle "Aus Registry Startmenüname auslesen"
Window 0,0-640,440
Dim Key#,260
Dim Handle#,4
Dim Name#,250
Dim Size#,4
Dim Wert#,260
Dim Type#,4
String Key#,0="SoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders"
Let Fehler&=@Regopenkeyex($80000001,Key#,0,$F003f,Handle#)
Print "Fehlercode beim Öffenen des Schlüssels User Shell Folders: ";Fehler&

If Fehler&=0

    String Name#,0="Start Menu"
    Long Size#,0=260
    Let Fehler&=@Regqueryvalueex(@Long(Handle#,0),Name#,0,Type#,Wert#,Size#)
    Print "Fehlercode beim Auslesen des Schlüssels: ";Fehler&
    Print ""
    Print "Das Startmenü des aktuellen Users steht hier: "
    Print @String$(Wert#,0)
    Print "Typ des Schlüssels: ";@Long(Type#,0)
    Print "Länge des Wertes: ";@Long(Size#,0);" Bytes"
    Print ""
    Print "Fehlercode RegCloseKey: ";@Regclosekey(@Long(Handle#,0))

Endif

If Fehler&<>0

    String Key#,0="SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders"
    Let Fehler&=@Regopenkeyex($80000001,Key#,0,$1,Handle#)
    Print "Fehlercode beim Öffenen des Schlüssels Shell Folders: ";Fehler&
    String Name#,0="Start Menu"
    Long Size#,0=260
    Let Fehler&=@Regqueryvalueex(@Long(Handle#,0),Name#,0,Type#,Wert#,Size#)
    Print "Fehlercode beim Auslesen des Schlüssels: ";Fehler&
    Print ""
    Print "Das Startmenü des aktuellen Users steht hier: "
    Print @String$(Wert#,0)
    Print "Typ des Schlüssels: ";@Long(Type#,0)
    Print "Länge des Wertes: ";@Long(Size#,0);" Bytes"
    Print ""
    Print "Fehlercode RegCloseKey: ";@Regclosekey(@Long(Handle#,0))

Endif

If Fehler&<>0

    Print "Fehler!!!!!! Startmenü konnte nicht ausgelesen werden!!!"

Endif

Dispose Type#
Dispose Wert#
Dispose Key#
Dispose Handle#
Dispose Name#
Dispose Size#

While 0=0

    Waitinput
ass=s4 href='./../../function-references/XProfan/Wend/'>Wend

1.) avec RegOpenKeyEx den Schlüssel avec dem Flag $1 zum lesen ouvrir.
ici sur keinen le cas den Schlüssel avec $F003F=Vollzugriff mais wirklich seulement avec $1=KEY_QUERY_VALUE ouvrir! Läuft dein Programme dans einem User Account et pas avec Adminrechten, ist sonst cela Lecture de Schlüsseln sous HKEY_LOCAL_MACHINE pas possible!!!

2 avec RegQueryValueEx Wert auslesen (égal quelle Art - String, Struktur ou bien Doubleword...). paramètre 4 Empfängt une Flag, qui angibt quelle Art de Wert ausgelesen wurde (String, Doubleword...).
 
11.12.2005  
 



ah oui...

quelques Registryschlüssel peux du selbst comme Administrator pas sans weiteres auslesen.
en supplément gehören sous anderem beispielsweise qui Schlüssel HKEY_LOCAL_MACHINESAMSAMDOMAINS et qui besonders de mir geliebte Schlüssel HKEY_LOCAL_MACHINESecurityPolicyAccounts.
 
11.12.2005  
 




Jac
de
Lad
Ah, je wusste, dass je sur qui zählen peux. Solche speziellen Schlüssel werde je sûrement pas brauchen. quand même merci pour deine Mühe,

schönen dimanche encore,
Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
11.12.2005  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.292 Views

Untitledvor 0 min.
Andre Rohland31.01.2018
J. Strahl22.02.2012
Heinz Bernhard28.10.2011
Julian Schmidt11.08.2011

Themeninformationen

cet Thema hat 2 participant:

unbekannt (6x)
Jac de Lad (6x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie