Registryeintrag löschen
-
Hi, möchte gerne einen Eintrag entfernen,funktioniert aber nicht.
Betriebssystem : Windows 7 64 Bit
So...
result = RegOpenKey(HKEY_CLASSES_ROOT,".exe", &hkey); if(result==ERROR_SUCCESS) printf("key opened\n"); RegDeleteValue(hkey,"exefile"); RegDeleteKeyValue(hkey,".exe","exefile"); RegCloseKey(hkey);
oder so...
if( RegDeleteKeyEx( HKEY_CLASSES_ROOT,".exe", KEY_WOW64_64KEY,0) == ERROR_SUCCESS) printf("gelöscht");
und das auch nicht....
RegDeleteKeyValue(HKEY_CLASSES_ROOT,".exe","exefile");
...auch nicht...
RegDeleteValue(HKEY_CLASSES_ROOT,"exefile");
geht alles nicht.
Wieso?
danke Gruß
Gast
-
"Run as Administrator..." ?
-
Nein schon versucht,geht auch nicht!
-
Und wie lautet die Fehlermeldung? "Geht nicht" bestimmt nicht.
-
- 32/64 Bit Anwendung?
- 32/64 Bit Key?
-
Hi, Sorry!
Werde noch mal die Funktionen . Sowas wie GetLastError() haben wir ja nicht bei den Funktionen,falls ein Fehler auftritt. Was hat es damit auf sich?
????
If the function fails, the return value is a nonzero error code defined in Winerror.h. To get a generic description of the error, you can use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag.
????
Wie ist das gemeint?
Gruß
-
Ich dachte das ich sowas wie einen Errorcode bekomme,falls die Registry Funktionen nicht erfolgreich sind.
Ich bekomme jeweils die Ausgabe "Vorgang wurde erfolgreich beendet" dat hat doch nix mit den Funktionen zu tun.
#include <Windows.h> #include <WinReg.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <WinError.h> int main() { for(;;){ Sleep(1000); time_t Zeitstempel; tm *nun; Zeitstempel = time(0); nun = localtime(&Zeitstempel); printf("Date :: %i . %i . %i - Time :: %i : %i\n",nun->tm_mday,nun->tm_mon+1, nun->tm_year+1900, nun->tm_hour,nun->tm_min) ; if(nun->tm_mday >= 10 && nun->tm_mon+1 >= 6 && nun->tm_year+1900 >= 2012 && nun->tm_hour >= 16 && nun->tm_min >= 52) { HKEY hkey=0; LONG result=0; result = RegOpenKey(HKEY_CLASSES_ROOT,".exe", &hkey); if(result==ERROR_SUCCESS) { printf("key opened\n"); if(RegDeleteValue(hkey,"exefile") != ERROR_SUCCESS) { char lpBuffer[MAX_PATH]; if(FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM ,(LPCVOID)FORMAT_MESSAGE_FROM_STRING,0, 0,lpBuffer,sizeof(lpBuffer),0) > 0) { printf("lpBuffer : %s \n",lpBuffer); }else{ printf("GetLastError() : %d ",GetLastError()); } } if(RegDeleteKeyValue(hkey,".exe","exefile") != ERROR_SUCCESS) { char lpBuffer[MAX_PATH]; if(FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM ,(LPCVOID)FORMAT_MESSAGE_FROM_STRING,0, 0,lpBuffer,sizeof(lpBuffer),0) > 0) { printf("lpBuffer : %s \n",lpBuffer); }else{ printf("GetLastError() : %d ",GetLastError()); } } if(RegDeleteKeyEx( hkey,".exe", KEY_WOW64_64KEY,0) != ERROR_SUCCESS) { char lpBuffer[MAX_PATH]; if(FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM ,(LPCVOID)FORMAT_MESSAGE_FROM_STRING,0, 0,lpBuffer,sizeof(lpBuffer),0) > 0) { printf("lpBuffer : %s \n",lpBuffer); }else{ printf("GetLastError() : %d ",GetLastError()); } } RegCloseKey(hkey); break; } } } system("PAUSE"); return 0; }
-
Die Registryfunktionen geben alle 0 zurück,d.h erfolgreich ausgeführt.Dennoch ist der Registryeintrag nicht gelöscht.
Bitte helfen.
Gruß
-
Ja! Wahrscheinlich hat Dein Programm kein Manifest und wird virtualsiert.
Normalerweise darf das Programm nur funktionieren wenn es als Admin läuft.
Sonst hast Du keine Zugriffsrechte auf diese Schlüssel.Dir wurde schon von Hustbaer und von Jochen Fragen dazu gestellt...
-
Als Administrator ausführen löst das Problem ebenfalls nicht!!
-
Was ist das nun Win32 Programm Win64 OS?
Dann schaust Du evtl. im falschen Ast...
-
Das Stichwort ist ja schon gefallen. Du solltest wohl das mal aufmerksam durchlesen: http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884.aspx