[BCB] Windows Registry Reg_Multi_SZ wert auslesen

Franz Rombs

Grünschnabel
Hi tutorials.de Community habe jetzt wieder eine Frage:

Ich bin jetzt am C++ üben und möchte mir ein kleines Tool erstellen welches mir die Drucker aus der Windows Registry auflistet.

Hier möchte ich Speziel bei den Netzwerkdruckern die IP-Adresse auslessen können und ändern können.

Code:
 TRegistry *Registry = new TRegistry;
        AnsiString KeyName="\\SYSTEM\\CurrentControlSet\\Control\\Print\\Printers\\"+ druckername + "\\DsSpooler\\";
        Registry->RootKey = HKEY_LOCAL_MACHINE;
        Registry->OpenKey(KeyName,false);
        Edit1->Text   = Registry->ReadString("portName");
        delete Registry;

Die Methode ReadString funktioniert bei REG_SZ werten leider aber nicht bei REG_Multi_SZ

Ich vewende:
  • Windows 7 32Bit
  • Borland C++ Builder v6


//Edit: Fehlermeldung
Code:
Im Project Project1.exe ist eine Exception der Klasse ERegistryException aufgetreten. Meldung: 'Ungültiger Datentype für 'portName'

Grüße
 
Zuletzt bearbeitet:
Hey,

also ich verwende in C++ die Funktionen um in der Registry was auszulesen bzw. was abzuändern. Hat bisher auch immer sehr gut geklappt:

RegCreateKeyEx()

Hier mal ein Beispiel um was in den Autostart einzutragen:

Code:
HKEY hKey;
BYTE byPfad[] = "C:\\test.exe";

RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, 0);
RegSetValueEx(hKey, "test.exe", 0, REG_SZ, byPfad, sizeof(byPfad));
RegCloseKey(hKey);

und hier ein Beispiel etwas auszulesen:

Code:
string stInhalt_Key;
HKEY hKey;
DWORD dwValueType;
DWORD dwValueLen;

RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_ALL_ACCESS, &hKey);
RegQueryValueEx(hKey, "CurrentVersion", 0, &dwValueType, 0, &dwValueLen);
LPSTR lpReturnStr = new char[dwValueLen];
RegQueryValueEx(hKey, "CurrentVersion", 0, &dwValueType, (unsigned char*)lpReturnStr, &dwValueLen);
stInhalt_Key = lpReturnStr;
RegCloseKey(hKey);

grüße
 
Zurück