Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst mit cPlusPlus aus Registry DWORD und SZ Werte auslesen

Mitglied: mghelp

mghelp (Level 1) - Jetzt verbinden

18.08.2006, aktualisiert 04.09.2006, 9591 Aufrufe, 6 Kommentare

Richtige Syntax, Bitte.

Ich habe mit c++ in die Registry geschrieben DWORD und SZ Werte, möchte Sie aber dann wieder auslesen
(danach soll der eingelesene Werte z.B. vergliechen werden mit Zahlen(vergleichen mache ich selbst),

HKEY_LOCAL_MACHINE\SOFTWARE\test\ in dem Schlüssel sind dann die Werte 1,2,3,...).

um dann damit weiter Arbeiten zu können.

Bitte um Hilfe, wie ich die Registry Werte auslesen kann( DWORD, SZ Werte),
ich verzweifle noch ;-(

Danke mghelp
Mitglied: Biber
19.08.2006 um 21:46 Uhr
Moin mghelp,

offen gestanden werde ich aus Deinem Beitrag nicht ganz schlau...
Ich habe mit c++ in die Registry geschrieben DWORD und SZ Werte,
möchte Sie aber dann wieder auslesen
*Kopfkratz....
...das heißt doch aber hoffentlich nicht, dass Du beim Experimentieren mit den Registryfunktionen als erstes mal eben in die Registry geschrieben hast, bevor Du es überhaupt versucht hast, die Werte zu lesen?
Ich meine, es geht mich ja nichts an und früher war ich auch risikofreudiger, aber...überdenken würde ich dieses Vorgehen nochmal.
(danach soll der eingelesene Werte z.B. vergliechen werden mit Zahlen(vergleichen mache ich selbst),
HKEY_LOCAL_MACHINE\SOFTWARE\test\ in dem Schlüssel sind dann die Werte 1,2,3,...).

Na ja, das kannst Du an Deinem PC machen, als erstes in den HKLM-Zweig schreiben, ich übe lieber erstmal in HKCU *gg
Und wieso Dir das Lesen der Werte Probs macht, Du aber das Vergleichen hinbekommst...
..muss eine neue Technik sein, nach der Du codest... ist mir jedenfalls fremd.

However, ich hab Dir mal einen kleinen Demo-Schnipsel zum Spielen gesammengeharkt:
01.
// RegTesting.cpp .... just for fun  &  mghelp by Biber 2006 
02.
#include <windows.h> 
03.
#include <stdio.h> 
04.
int main() { 
05.
HKEY hkey;  
06.
HKEY currentHive = HKEY_CURRENT_USER; 
07.
char sz_AdminesName[] = "Angie M."; 
08.
DWORD dwDefaultPDAS = 1;  // Default für "PauerDownAfterShutdaun" : 1 
09.
DWORD dwDefaultPDBM = 23; // Default für "PauerDownBeforeMidnight": hex 17 = dez 23 
10.
DWORD dwKeyPDAS = 0;  
11.
DWORD dwKeyPDBM = 0;  
12.
DWORD dwLen = sizeof(DWORD); 
13.
DWORD dwDisposition = 0; // kann die Werte REG_CREATED_NEW_KEY oder  
14.
                         //              REG_OPENED_EXISTING_KEY annehmen 
15.
DWORD Bufferlen = 100; 
16.
char sz_Admine[100] = "\0";                          
17.
long hResult; 
18.
     // Test - existiert der Schlüssel schon? Aber diese RegOpenHeyEx-Abfrage ist obsolet. 
19.
     // Lässt sich alles mit RegCreateKeyEx() abfackeln, wie 5 Zeilen weiter unten. 
20.
     if (RegOpenKeyEx(currentHive , TEXT("Software\\mghelp\\Test"), 
21.
        0, KEY_ALL_ACCESS, &hkey) != ERROR_SUCCESS) 
22.
          printf("HKCU\\Software\\mghelp\\Test exixtiert nicht.\n"); 
23.
        // return (1);            //->entkommentieren, falls Du ausstiegen willst, falls Key noch nicht da. 
24.
 
25.
     // RegCreateKeyEx() legt den Subkey an, wenn nötig. Wenn der Subkey schon vorhanden ist, 
26.
     // dann wird er geöffnet - Rückgabe der Function ist in beiden Fällen ERROR_SUCCESS == ALLESPRIMA 
27.
     hResult = RegCreateKeyEx( currentHive, TEXT("Software\\mghelp\\Test"), 0, NULL, 
28.
          REG_OPTION_NON_VOLATILE,  /* Option REG_OPTION_NON_VOLATILE */ 
29.
          KEY_ALL_ACCESS,           /* Accessmaske, KEY_ALL_ACCESS */ 
30.
          NULL,                     /* Security-Attribut */ 
31.
          &hkey,                   /* Da soll das Rückgabeobjekt hin */ 
32.
          &dwDisposition);       .if (hResult != ERROR_SUCCESS)  
33.
               printf("HKCU\\Software\\mghelp\\Test konnte nicht angelegt werden.\n"); 
34.
          // in dwDisposition steht, falls der Subkey schon  da war, der Wert 2 ( REG_OPENED_EXISTING_KEY) 
35.
          // falls wirklich neu angelegt wurde, hat es den Wert 1 (REG_CREATED_NEW_KEY) 
36.
 
37.
       // Mal ein paar Werte auslesen...das war ja die Frage    
38.
       // Beispielwerte unter HKCU\Software\mghelp\Test waren von früheren Testläufen dieses Schnipsels anlegt 
39.
       // und manuell per RegEdit manipuliert worden (siehe Output unten)     
40.
      // a) HKCU\Software\mghelp\Test\PauerDownAfterShutdaun REG_DWORD auslesen 
41.
      RegQueryValueEx(hkey, TEXT("PauerDownAfterShutdaun"), NULL, NULL, 
42.
                      (LPBYTE)&dwKeyPDAS, &dwLen); 
43.
 
44.
      // b) HKCU\Software\mghelp\Test\PauerDownBeforeMidnight REG_DWORD auslesen 
45.
      RegQueryValueEx(hkey, TEXT("PauerDownBeforeMidnight"), NULL, NULL, 
46.
                      (LPBYTE)&dwKeyPDBM, &dwLen); 
47.
 
48.
      // c) HKCU\Software\mghelp\Test\AlternativeAdmine REG_SZ auslesen 
49.
      RegQueryValueEx(hkey, TEXT("AlternativeAdmine"), NULL, NULL, 
50.
                      (LPBYTE)&sz_Admine, &Bufferlen) ; 
51.
      /* Setzen des Stringwerts HKCU\Software\mghelp\Test\AlternativeAdmine REG_SZ ...egal was da stand...*/    
52.
      RegSetValueEx(hkey, TEXT("AlternativeAdmine"), 0, REG_SZ,  
53.
            (const BYTE*)&sz_AdminesName, sizeof(sz_AdminesName)+1); 
54.
     printf( "Wert von AlternativeAdmine in Reg (%s ) auf %s gesetzt. \n" , 
55.
                   sz_Admine , sz_AdminesName); 
56.
 
57.
       /* der Vergleich zwischen gesetztem Wert in der Registry und dem Defaultwert */ 
58.
      if ( dwKeyPDBM !=  dwDefaultPDBM) {   
59.
          RegSetValueEx(hkey, TEXT("PauerDownBeforeMidnight"), 0, REG_DWORD, 
60.
                  (const BYTE*)&dwDefaultPDBM, dwLen); 
61.
              printf ( "Defaultwert 0x%x  (vorher 0x%x fuer PauerDownBeforeMidnight gesetzt.\n" , 
62.
                        dwDefaultPDBM, dwKeyPDBM);    
63.
64.
 
65.
      if ( dwKeyPDAS !=  dwDefaultPDAS) {   
66.
          RegSetValueEx(hkey, TEXT("PauerDownAfterShutdaun"), 0, REG_DWORD, 
67.
                  (const BYTE*)&dwDefaultPDAS, dwLen); 
68.
              printf ( "Defaultwert 0x%x (vorher: 0x%x) fuer PauerDownAfterShutdaun gesetzt." , 
69.
                          dwDefaultPDAS, dwKeyPDAS ); 
70.
71.
RegCloseKey(hkey);    // den solltest Du nicht vergessen 
72.
 
73.
return 0; 
74.
  
75.
} 
Is' sich jezz nicht so aufregend, was die paar Zeilen machen, soll ja auch nur zum Spielen sein.

Output wäre in etwa (wenn Schlüssel existiert, aber mit "falschen" Werten) sinngemäß:
01.
$cmd$d:\Dev-Cpp\Spielkram\regTesting.exe 
02.
Wert von AlternativeAdmine in Reg (Merkelchen ) auf Angie M. gesetzt. 
03.
Defaultwert 0x17  (vorher 0x22 fuer PauerDownBeforeMidnight gesetzt. 
04.
Defaultwert 0x1 (vorher: 0x6) fuer PauerDownAfterShutdaun gesetzt. 
05.
Z:\> 
06.
$cmd$
Sollte der RegKey nicht existieren, kommt eine Meldung "HKCU\Software\mghelp\Test exixtiert nicht." oder so.

Hope That Helps
Biber
P.S. Professionellere Hilfe als bei mir bekommst Du sogar bei M$: MSDN-Library Registry Functions
P.P.S. Solche Formulierungen wie
Richtige Syntax, Bitte.
...finde ich eine Dreistigkeit... aber vielleicht bin ich da zu sensibel.
Bitte warten ..
Mitglied: mghelp
20.08.2006 um 16:15 Uhr
Sorry, für die Direktheit.

Manche schreiben ein Beispiel Code, der aus mehreren Prog. Sprachen zusammengewürfelt ist oder eine sinnlos Syntax verwenden.

z.B. Java und html php usw durcheinander bringen weil Sie keine Ahnung haben. (Das ist schade bei so einer großartigen Seite.)

Entschuldigung nochmals.

Gruß mghelp
Bitte warten ..
Mitglied: Biber
20.08.2006 um 16:36 Uhr
Na ja, mghelp,

ich hab mich bemüht, mich auf "normales" C# zu beschränken.
Ich habe ich nicht den inzwischen wohl beliebteren Weg über das .NET-Framework beschrieben
("using Microsoft.Win32.Registry" etc), den ich auch wesentlich lesbarer finde.

Hoffe also, es passt als versuchte Antwort zu Deiner Frage.

Aber, auch wenn es C++ ist, ich habe es gestern schnell zusammengeschrotet und nicht so getestet, dass es irgendwo zum Produktiv-Einsatz kommen könnte. Soll nur eine kurze und sicherlich unvollständige Skizze sein mit den üblichen drei Flüchtigkeitsfehlern je 10 Zeilen.
Handle with care, ich habe nicht so riesige Qualitätskontrollkapazitäten wie M$..

Gruß
Biber
Bitte warten ..
Mitglied: mghelp
20.08.2006 um 16:50 Uhr
Trotzdem Danke,

ich brauche doch nur eine vorlage (Beispiel) wie inetwa es sein könnte.

Ich mach das schon das es funkt..

Danke mghelp
Bitte warten ..
Mitglied: Biber
20.08.2006 um 17:07 Uhr
Ist okay, mghelp,

das wird wohl hier im Forum auch so bleiben, dass hier gepostesten Beispiele und Skizzen noch angepasst und getestet werden müssen.
Es sind ja auch keine (oder wenige) UserInnen hier im Forum, die ihr Geld mit professioneller Programmierung verdienen.

Die würden mir sicherlich (berechtigterweise) so ein zusammengeschreddertes Fragment wie oben um die Ohren hauen...

...aber dafür kostet Dich eine Zeile Code hier im Forum auch nur die anteilige Lesezeit an der monatlichen Flatrate und nicht die 20 €uronen,
die jemand aus www.gelbeseiten.de /und wert) verlangen würde.

Also sei bitte nicht zu hart zu uns hilfewilligen Laien.

Grüße
Biber
Bitte warten ..
Mitglied: Biber
04.09.2006 um 01:28 Uhr
Nachfragen, mghelp,
ich verzweifle noch ;-(
Ich mach das schon das es funkt..

Schwankst Du noch immer zwischen Fatalismus und Euphorie?
Hast Du es jetzt zum Fliegen bekommen?
Können wir den Beitrag schließen, sind noch Fragen offen?
Postest Du noch das Ergebnis?
...??

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen

gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Webbrowser

Werte in der Registry werden nicht angewendet

gelöst Frage von MarcysWebbrowser4 Kommentare

Hallo, ich habe ein Problem mit der Registry. Und zwar setze ich die Werte für den Proxy nicht über ...

Windows Server

SCCM2012 Abfrage eines Registry Wertes

gelöst Frage von busteronWindows Server5 Kommentare

Hallo an die Gemeinschaft, ich hänge momentan an ein Problem wo ich gerade nicht weiter weiß. Weiß jemand ob ...

Batch & Shell

Wert in Registry suchen und in Variable speichern

Frage von J.TrollBatch & Shell2 Kommentare

Hi Liebes Form Ich hab ein Problem mit einem denke ich recht einfachen Programmteil. Vielleicht kann mir jemand von ...

Neue Wissensbeiträge
Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 9 StundenHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Sicherheit

Oracle gibt kritische Updates für diverse Produkte frei (16. Oktober 2018)

Information von kgborn vor 20 StundenSicherheit

Oracle hat zum 16. Oktober 2018 eine ganze Reihe an kritischen Updates für seine Produkte freigegeben. Eine Kurzübersicht mit ...

Windows 10
FYI: Fristen beim Windows 10 Downgrade-Recht
Information von kgborn vor 21 StundenWindows 10

Möglicherweise ist das bei euch bekannt - ich habe es gerade aus einem Newsletter eines OEMs herausgefischt. Beim Downgrade-Recht ...

CMS
Freie Wähler Bayern MySQL PW online
Information von sabines vor 1 TagCMS6 Kommentare

Die Typo3 Installation der Freien Wähler Bayern scheint wohl längere Zeit nicht mehr angefasst und/oder fehlkonfiguriert zu sein. Nach ...

Heiß diskutierte Inhalte
Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1021 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Internet
Ist diese URL denkbar (Syntax)?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Der Sohn eines Arbeitskollegen hat im Gymnasium EDV-Unterricht. Leider hat er in der letzten Klassenarbeit einen Fünfer geschrieben. ...

Exchange Server
Outlook Anywhere - Anmeldefenster muss mit Domain gefüllt werden
Frage von leon123Exchange Server15 Kommentare

Hallo zusammen, ich habe relativ erfolgreich einen Exchange 2016 aufgesetzt, sowie ein SAN-Zertifikat eingespielt und Outlook Anywhere aktiviert. Beim ...

Debian
Linux debian 9 Installation
Frage von Green14Debian15 Kommentare

Hallo zusammen, ich habe mich ein wenig mit Debian auseinandergesetzt und möchte mir eine Standard-Installation als Grundlage für andere ...