Hallo Zusammen,
ich habe ein Programm, dass für den Benutzer automatisch die Ländereinstellung, also Umgebungssprache der MUI, Tastaturlayout und Regionseinstellungen, einstellt. Das Programm tut dies für eine Multilanguage Windows-Installation von XP, Windows 7 und Windows 8. Als Sprachen werden derzeit Englisch (Installationssprache von Windows), Dänisch (MUI-Pack), Italienisch (MUI-Pack), Spanisch (MUI-Pack), Französisch (MUI-Pack), Japanisch (MUI-Pack), Koreanisch (MUI-Pack), Chinesisch (MUI-Pack), Schwedisch (MUI-Pack) und Russisch (MUI-Pack) unterstützt.
Für die Änderung der Umgebungssprache, des Tastaturlayouts und der Regionseinstellungen funktioniert alles prima, weil diese Informationen nur unter
HKCU in der Registry abgelegt sind.
Jetzt war die Anforderung dahingehend erweitert worden, dass man auch das Tastaturlayout am Anmeldebildschirm und die Sprache für Nicht-
Unicode fähige Programme ändern kann. Diese Informationen stehen aber unter
HKLM bzw.
HKU und sind nur mit Admin-Rechten erreichbar.
Das Problem habe ich dahingehend gelöst, dass ich mir im temporären Verzeichnis des Benutzers eine reg-Datei mit den entsprechenden Werten erstelle und dann mit einem anderen Account via "CreateProcessWithLogonW" aufrufe. Damit die Werte des Accounts in der EXE-Datei nicht im Klartext sichtbar sind, habe ich sie via "dcpcrypt2" mit AES verschlüsselt abgelegt. Vor dem Aufruf der Funktion werden die Werte wieder entschlüsselt und der Funktion übergeben.
Wenn auf dem Rechner eine MUI mit lateinischem Zeichensatz aktiv ist, dann kommt auch das richtige Passwort wieder heraus. Sollte die japanische, koreanische, chinesische oder russische MUI aktiv sein, dann scheitert der Aufruf.
Nun meine Frage. Gibt es eine Möglichkeit, dass ich temporär die Codepage für die Entschlüsselung und dem Aufruf meiner Funktion ändern kann oder muss ich das Passwort für alle nicht lateinischen Sprachen mitabspeichern?
Ich hoffe auf Eure kreativen Ideen.
Gruß
moonwalk55