Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   RegDeleteKeyEx wie geht das ?? (https://www.delphipraxis.net/155746-regdeletekeyex-wie-geht-das.html)

kuba 5. Nov 2010 20:34

RegDeleteKeyEx wie geht das ??
 
Hallo,

ich möchte einen Key in der Registry von Windows 7 64Bit Version löschen. Habe herausgefunden, dass es mit RegDeleteKeyEx funktionieren soll. Wie benutzt man das ?

KUBA

Luckie 5. Nov 2010 20:40

AW: RegDeleteKeyEx wie geht das ??
 
Delhihilfe? Windows SDK? Forensuche? Google?

kuba 5. Nov 2010 20:47

AW: RegDeleteKeyEx wie geht das ??
 
Hallo Lucky,

habe unendlich gegoogelt und diesen Code gefunden:

Delphi-Quellcode:
procedure RegDeleteKeyEx(const RootKey: HKEY; const SubKeyName: String;
  const samDesired: Cardinal);
Funktioniert aber nicht...

Habe den Code dann geändert:

Delphi-Quellcode:
procedure RegDeleteKeyEx(const RootKey: HKEY; const SubKeyName: String;
  const samDesired: Cardinal); external 'advapi32.dll' name 'RegDeleteKeyExW';
aber wenn ich einen key löschen will stürzt mein Programm ab:

Delphi-Quellcode:
RegDeleteKeyEx(HKEY_LOCAL_MACHINE, '\Software\Test', KEY_WOW64_64KEY);
was läuft falsch ??

KUBA

Luckie 5. Nov 2010 20:54

AW: RegDeleteKeyEx wie geht das ??
 
Zitat:

Zitat von kuba (Beitrag 1059962)
Funktioniert aber nicht...

Das ist ja mal eine umwerfende Fehlerbeschreibung. :roll: Wie sollen wir da helfen? Dir ist aber schon bewusst, dass du mit einer 32-Bit Anwendnung nicht so ohne weiteres an den 64-Bit Schlüssel kommst?

Assarbad 5. Nov 2010 20:57

AW: RegDeleteKeyEx wie geht das ??
 
Zitat:

Zitat von Luckie (Beitrag 1059965)
Dir ist aber schon bewusst, dass du mit einer 32-Bit Anwendnung nicht so ohne weiteres an den 64-Bit Schlüssel kommst?

Mit dem benutzten Flag normalerweise schon :zwinker:

Luckie 5. Nov 2010 20:59

AW: RegDeleteKeyEx wie geht das ??
 
Letzte Zeile im Beitrag übersehen.

Wie sieht die Fehlerbehandlung aus? Was sagt GetLastError?

kuba 5. Nov 2010 21:19

AW: RegDeleteKeyEx wie geht das ??
 
keine Ahnung, bin zu müde heute
morgen wieder ...

Das ist nicht mein Code. Ich mache nur die Fehler raus :stupid:

KUBA

Assarbad 5. Nov 2010 21:21

AW: RegDeleteKeyEx wie geht das ??
 
Zitat:

Zitat von kuba (Beitrag 1059971)
keine Ahnung, bin zu müde heute
morgen wieder ...

:evil:
Code:
Themen-Optionen -> Abonnement dieses Themas löschen

kuba 6. Nov 2010 06:31

AW: RegDeleteKeyEx wie geht das ??
 
Zitat:

Zitat von Assarbad (Beitrag 1059972)
Zitat:

Zitat von kuba (Beitrag 1059971)
keine Ahnung, bin zu müde heute
morgen wieder ...

:evil:
Code:
Themen-Optionen -> Abonnement dieses Themas löschen

:shock:

musste unbedingt schlafen, hatte gestern eine lange Reise. Das Thema hat mir keine Ruhe gelassen :pale:

heute gehts wieder ...

Fehlerbehandlung ?? GetLastError ?

Muss mal überlegen :cat:
Erstmal schauen was mein Kätzchen macht, die hat mich ein paar Tage nicht gesehen.

KUBA

ULIK 6. Nov 2010 07:36

AW: RegDeleteKeyEx wie geht das ??
 
Nur so am Rande: Du willst aus HKEY_LOCAL_MACHINE unter Windows 7 löschen. Hast Du dazu denn überhaupt die Berechtigung? Wenn das Programm als normaler User läuft, wirst Du da nichts löschen können.

Grüße,
Uli

kuba 6. Nov 2010 07:53

AW: RegDeleteKeyEx wie geht das ??
 
Hy,

ja das ist mir schon klar, habe mein Programm mit Administratorberechtigung gestartet.

KUBA

kuba 6. Nov 2010 10:40

AW: RegDeleteKeyEx wie geht das ??
 
Hy,

habe die Prozedur zu einer Funktion umgebaut:

Delphi-Quellcode:
function RegDeleteKeyEx(const hKey: HKEY;const lpSubKey: string;
  const samDesired: REGSAM; reserved : DWORD): boolean; stdcall;
  external 'advapi32.dll' name 'RegDeleteKeyExW';
In meinem Programm rufe ich das so auf:

Delphi-Quellcode:
if RegDeleteKeyEx(HKEY_LOCAL_MACHINE, '\Software\Test', KEY_WOW64_64KEY, 0) then
       showmessage(SysErrorMessage(GetLastError))
       else showmessage(SysErrorMessage(GetLastError));
Als Fehlermeldung erhalte ich: "der Vorgang wurde erfolgreich beendet"

Der Schlüssel in der Registry wurde jedoch nicht gelöscht, was läuft falsch ??

KUBA

mkinzler 6. Nov 2010 10:58

AW: RegDeleteKeyEx wie geht das ??
 
Bitte verwende Delphi-Tags (Delphi-Icon) bei Delphi-Code. Und innerhalb 24 Stunden kannst du deinen letzten Beitrag ändern/erweitern, wenn dir noch etwas winfällt und noch keinen geantwortet hat; den Pushen sehen wir hier nicht so gerne

DeddyH 6. Nov 2010 14:50

AW: RegDeleteKeyEx wie geht das ??
 
Du hast auch den kompletten Artikel aus dem MSDN zu RegDeleteKeyEx gelesen?
Zitat:

Return Value

If the function succeeds, the return value is ERROR_SUCCESS.

If the function fails, the return value is a nonzero error code defined in Winerror.h. You can use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag to get a generic description of the error.

Remarks

A deleted key is not removed until the last handle to it is closed.

On WOW64, 32-bit applications view a registry tree that is separate from the registry tree that 64-bit applications view. This function enables an application to delete an entry in the alternate registry view.

The subkey to be deleted must not have subkeys. To delete a key and all its subkeys, you need to enumerate the subkeys and delete them individually. To delete keys recursively, use the RegDeleteTree or SHDeleteKey function.

If the function succeeds, RegDeleteKeyEx removes the specified key from the registry. The entire key, including all of its values, is removed.

Dezipaitor 6. Nov 2010 16:40

AW: RegDeleteKeyEx wie geht das ??
 
Hat mit dem Thema zu tun:
http://blog.delphi-jedi.net/2010/08/...key-and-64bit/

kuba 6. Nov 2010 17:26

AW: RegDeleteKeyEx wie geht das ??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

hab mir alles nochmal fein durchgelesen und noch einige Tests gemacht.

Mittlerweile weiss ich warum es nicht funktioniert hat. Beim Schlüssel darf der erste Backslash nicht vorkommen, z.B.: 'software\test'.

2 Testprogramme habe ich nochmal angehangen..

KUBA


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz