C++ Registry hilfe bei DWORD

OP #3224510
Lesenswert?
• ▲
▼
Guten tag liebe com,
ich versuche derzeit über die Registy den Proxy zu deaktivieren, bzw. 
aktivieren.

Laut der Registry hat der Wert den Typ Reg_DWORD.
Also habe ich auch verusuch mit DWORD ein Wert zu ändern:
1
RegSetValueEx(hKey,Key,0,REG_DWORD,(BYTE*)"0x00000000",200);
Jedoch wird dann in der Registry der Wert als unbekannter DWORD Typ 
angezeigt. Ich denke ja mal das ich irgendwas falsch mache und das BYTE* 
dort wahrscheinlich garnicht hingehört, aber wenn dort direkt ein DWORD 
Wert reinschreibe, wir das ganze erst garnicht Compiliert. Dort kommt 
dann die Fehlermeldung das der Typ nicht in const char konvertiert 
werden kann...


lg, repac3r
Gast #3224545
Lesenswert?
• ▲
▼
Marcel Hoffmann schrieb:
> Peter II schrieb:
>>> (BYTE*)"0x00000000",
>>
>> was soll das auch darstellen?
> Den Wert den ich in die Regstry schreiben möchte, genau dort ist ja mein
> Problem, das da ein ungültiger Wert kommt.

dann denke doch mal nach, Warum sollte man überhaupt einen DWORD wert 
als STRING übergeben und dann auf eine Byte array casten.

auch die nächste Parameter ist Unsinn.

Warum übergibst du nicht einfach die zahl als zahl?
OP #3224555
Lesenswert?
• ▲
▼
Habe das ganze mal ein bisschen abgeändert:
1
    DWORD byte = "0x0000001";
2
    HKEY hKey ;
3
    RegOpenKeyEx (HKEY_CURRENT_USER, KPath, 0, KEY_SET_VALUE, &hKey);
4
    RegSetValueEx(hKey,Key,0,REG_DWORD,(BYTE*)&byte, sizeof(DWORD));

Leider funktioniert dies auch nicht dort wird mir schon beim definieren 
der Variable byte, des Fehleer angezeigt, dass sich const char[10] nicht 
in DWORD konvertieren lässt.
#3224565
Lesenswert?
• ▲
▼
Marcel Hoffmann schrieb:
> Habe das ganze mal ein bisschen abgeändert:

>     DWORD byte = "0x0000001";

EIn DWORD ist auch nichts anderes als eine Zahl.
Also weiß doch den ganzen eine Zahl zu und KEINEN String!
Wo ist denn das Problem bei

DWORD byte = 5;
oder
DWORD byte = 8;
oder eben von mir aus
DOWRD byte = 0x00000001;

Eben. Es gibt kein Problem. Zahl ist Zahl. Ob du die als Dezimalzahl 
schreibts, oder als Oktalzahl oder eben als Hexadezimalzahl spielt doch 
keine Rolle. Es ist eine Zahl.
Aber ein String ist KEINE Zahl! Ein String ist in erster Linie Text. Und 
der Text kann genausogut "Otto" lauten, wie er auch "0x00000001" lauten 
kann. Aber nur weil dich letzterer String an eine Zahl errinnert, macht 
das den String noch lange nicht zur Zahl.

Oder schreibst du
1
   int i = "5";
?
#3224598
Lesenswert?
• ▲
▼
Marcel Hoffmann schrieb:
> DWORD byte = "0x0000001";

Von den anderen Dingen mal abgesehen:

Du definierst eine Variable vom Typ DWORD, nennst sie byte und versuchst 
ihr dann, einen String zuzuweisen. Ersteres ist syntaktisch okay, aber 
doch eher verwirrend, gerade wenn man nicht so wirklich weiß, was man 
eigentlich tut. Zweiteres wurde ja schon behandelt.

<nitpick>
Auch wenn dein Code sich der Untermenge von C bedient, die auch legales 
C++ ist und sich insofern abgesehen von den deplazierten 
String-Literalen als C++ compilieren lassen sollte, ist das eigentlich 
C. Ist völlig legitim, aber falls du C++ lernen möchtest, dann benutze 
besser von Anfang an die entsprechenden Casts etc. Dann beschäftigst du 
dich automatisch mehr damit, was die verschiedenen Typen eigentlich sind 
und was du da eigentlich zwischen diesen Typen wie umwandelst und warum. 
- Auch wenn die WinAPI einem auf dem Weg zur sauberen Typisierung jede 
Menge Steine in den Weg legt ;)
</nitpick>

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.