[MFC++] - Mit Regedit.exe ANSI Dateien schreiben

Peter

Lt. Commander
Registriert
Mai 2001
Beiträge
1.957
Mit Regedit.exe ANSI Dateien schreiben

Ich benutze den Registry Editor in meiner MFC-App um einen Registry-Zweig zu exportieren:
Code:
      CString strParam, strKey;
      strKey = "HKEY_........."
      strParam.Format( _T(" /s /e \"%s\" %s"), strFile, strKey );      
      SHELLEXECUTEINFO se = { 0 };
      se.cbSize = sizeof( se);
      se.lpFile = _T( "regedit.exe");
      se.lpParameters = strParam;
      se.nShow = SW_SHOWDEFAULT;
      se.fMask = SEE_MASK_NOCLOSEPROCESS;
      ShellExecuteEx( &se );
      
      WaitForSingleObject(se.hProcess, INFINITE);
      CloseHandle(se.hProcess);
Wenn ich dies unter NT mache produziert mir der Editor eine Unicode Datei.
Unter WinDOS9x kommt dabei eine ANSI-Datei heraus.

Da diese *.reg-Datei aber im Programm noch Verwendung findet, muss ich
- entweder regedit.exe sagen, dass es in jedem Falle ANSI-Text produziert
- oder unter NT die Datei von Unicode nach ANSI konvertieren
- oder ...

gibt es eine *einfachere* Lösung?

btw: Wie prüfe ich die Codierung einer Text-Datei beim Öffen ab, um sie entsprechend zu decodieren?
 
Die MFC bietet doch mit Sicherheit Methoden an, um Textstreams in ein anderes Format zu kodieren.

Also irgendwie so (ich habe keine Ahnung von MFC, aber der Sinn dürfte klar sein):
Code:
//erstmal den ganzen text rausholen
TextStream text = deinRegfileObject.getText();

// dann den Text in ASCII konvertieren (oder ANSI)
text.recode( ASCII);

// irgendwie den umgewandelten Text wieder in das Regfile drücken
deinRegfileObject.setText( text);
Tja, wenn du unter Linux mit Qt programmieren würdest hätte ich wohl präziser werden können :D.

Wenn ich mir deinen Quellcode so anschaue weiß ich warum bei mir in der Firma jeder über MFC mault :lol:.
 
Hi,

da dein Code Sample eh nur API Calls drin hat, warum exportierst du dir den RegString nicht per hand und schreibst ihn raus wie du meinst.

Befehle die dir helfen könnten:

RegOpenKeyEx
RegQueryValueEx
RegSaveKey
RegSetValueEx
RegDeleteValue

Gruß

Toaster
 
@ Boron
Sowas musste ja kommen :D
Wobei ich an das Umcodieren auch schon gedacht hatte. Ich weiss bisher bloss nocht nicht wie ich ANSI von Unicode unterscheide.

Toaster, du hast Recht, ich könnte das auch von 'Hand' machen, aber:
Ich kann im Voraus keine Aussage machen, was in dem Schlüssel steht bzw. wie gross dieser ist. Dort können belieg viele weitere Schlüssel mit jeweils maximal 2 Unterschlüsseln mit unterschiedlicher Anzahl von Werten drin stehen.
Von daher dachte ich mir, dass das Ganze über den API-Aufruf etwas einfacher zu realisieren wäre.
So müsste ich nun die ganze Rekursionsgeschichte von Hand machen :(
 
Zuletzt bearbeitet:
Zurück
Oben