Regions- und Sprachoptionen per Skript ändern
Hallo Onliners,
mein heutiges Problem.
Ich habe eine Software die nach Installation von SP2 (WinXP) Punkt und Komma nicht mehr richtig unterscheidet
Lösung: Ich gehe auf die Regions- und Sprachoptionen und wähle sagen wir Englisch. Dann drücke ich Übernehmen. Danach wähle ich wieder Deutsch (Übernehmen) und starte mein Porgramm. Alles läuft.
Das muss jeder User machen, der mit dieser Software arbeiten will.
Frage: Gibt es eine Möglichkeit per Autostart (Batch, Skript) diesen Vorgang zu automatisieren?
Schon mal im voraus Danke für eure Unterstützung.
Gruss Nohouse
mein heutiges Problem.
Ich habe eine Software die nach Installation von SP2 (WinXP) Punkt und Komma nicht mehr richtig unterscheidet
Lösung: Ich gehe auf die Regions- und Sprachoptionen und wähle sagen wir Englisch. Dann drücke ich Übernehmen. Danach wähle ich wieder Deutsch (Übernehmen) und starte mein Porgramm. Alles läuft.
Das muss jeder User machen, der mit dieser Software arbeiten will.
Frage: Gibt es eine Möglichkeit per Autostart (Batch, Skript) diesen Vorgang zu automatisieren?
Schon mal im voraus Danke für eure Unterstützung.
Gruss Nohouse
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 19477
Url: https://administrator.de/contentid/19477
Ausgedruckt am: 20.11.2024 um 07:11 Uhr
13 Kommentare
Neuester Kommentar
Moin Nohouse303,
kein Problem...bis auf die Vorarbeit..die wird wohl an Dir hängenbleiben..
Im meinem Workshop Batch for Runaways - Part III - Datums- und Zeitvariablen im Batch habe ich mal ein bisschen gegraben, wo denn die "Regional Settings" so stehen in M$s Innereien.
Für Deinen Fall gäbe es also zwei eben-mal-schnell realisierbare Möglichkeiten:
1) per Hand mal eine RegionalSettings.reg-Datei, mit der dein Programm läuft, aus der Registry zu exportieren.
Beim Kunden dann vor Programmstart dessen alte Reg-Werte in diesem Zweig sichern, Deine Reg einlesen, nach Programmende den alten Zustand wiederherstellen.
2) oder mal im Detail nachzuforschen. welche zwei oder drei RegKeys denn verantwortlich sind für Dein Komma/Punkt-Problem. Und nur diese RegKeys zu ersetzen/zu ergänzen.
Aber die Recherche musst Du wohl erst machen.. Bätche brauchen immer irgendwelche festen Punkte im Raum, bevor sie loslaufen können.
Beim Handwerklichen kann ich dann bei Bedarf gerne Hilfestellung geben.
Grüße
Biber
kein Problem...bis auf die Vorarbeit..die wird wohl an Dir hängenbleiben..
Im meinem Workshop Batch for Runaways - Part III - Datums- und Zeitvariablen im Batch habe ich mal ein bisschen gegraben, wo denn die "Regional Settings" so stehen in M$s Innereien.
Für Deinen Fall gäbe es also zwei eben-mal-schnell realisierbare Möglichkeiten:
1) per Hand mal eine RegionalSettings.reg-Datei, mit der dein Programm läuft, aus der Registry zu exportieren.
Beim Kunden dann vor Programmstart dessen alte Reg-Werte in diesem Zweig sichern, Deine Reg einlesen, nach Programmende den alten Zustand wiederherstellen.
2) oder mal im Detail nachzuforschen. welche zwei oder drei RegKeys denn verantwortlich sind für Dein Komma/Punkt-Problem. Und nur diese RegKeys zu ersetzen/zu ergänzen.
Aber die Recherche musst Du wohl erst machen.. Bätche brauchen immer irgendwelche festen Punkte im Raum, bevor sie loslaufen können.
Beim Handwerklichen kann ich dann bei Bedarf gerne Hilfestellung geben.
Grüße
Biber
Moin Nohouse,
mach es analog zu dem Beispiel in dem o.a. Tut mit reg.exe oder mit RegEdit.exe
und das Ganze in einem kleinen Programmaufruf-Batch:
..aber auf jeden Fall unter HKCU ersetzen, nicht unter dieser SID-ID.. die passt ja nur auf einem Rechner.
HTH Biber
mach es analog zu dem Beispiel in dem o.a. Tut mit reg.exe oder mit RegEdit.exe
und das Ganze in einem kleinen Programmaufruf-Batch:
---StartNohouseProggi.bat
@echo off &setlocal
Set "tempreg=%temp%\My.reg"
Echo Windows Registry Editor Version 5.00 >%tempreg%
Echo. >>%tempreg%
Echo [HKEY_CURRENT_USER\Control Panel\International\Geo] >>%tempreg%
Echo "Nation"="94">>%tempreg%
regedit /s %tempreg%
start /w x:\yz\NohouseProggi.exe
---StartNohouseProggi.bat
..aber auf jeden Fall unter HKCU ersetzen, nicht unter dieser SID-ID.. die passt ja nur auf einem Rechner.
HTH Biber
Moin, Nohouse,
Und die soll im Verzeichnis %temp% angelegt werden, da hat jeder Zugriff.
Dass diese "Set"-Anweisung in Anführungszeichen funktioniert, sagt M$ nicht, aber ich. Dokumentiert ist es nicht.
Meine Batch sieht jetzt folgendermaßen aus.
Die SIS lese ich mir aus.
Halte ich für überflüssig und gefährlich. Wozu?? Der aktuelle Benutzer heißt immer HKEY_CURRENT_USER *kopfschüttelt
Nimm besser statt
Macht es außerdem lesbarer.
Wenn bei Deinen Kunden da was drin steht... ich würde erst prüfen, ob das Verzeichnis ..\Credentials" existiert und nicht HIDDEN/SYSTEM ist.
Denn sonst greift der FOR /R..IN DO-Befehl .. möglicherweise daneben.
jo, mag sein... glaub ich Dir mal einfach, dass bei %Letztes% das Richtige drin steht.
Gehst Du immer mit ADMIN-Rechten rein?... Mach ich nicht mal bei Freunden...
...
...
Ja, kann... funk-ti-o-nie-ren *seufz
.. dubios sind mir diese SID/HKEY_USERS-Zugriffe... dazu brauchst Du die Rechte. Ich würde immer über HKEY_CURRENT_USER gehen.
Und dieses "C:\Dokumente......" hatte ich ja angesprochen. Klappt halt in 70% der Fälle. Bei 30% wirst Du angerufen.."jammer..geht nicht.."
Gruss zurück
Biber
Hallo, erstmal vielen Dank für das schnelle posten.
Dafür nich'....Was Bedeutet die Zeile:
Set "tempreg=%temp%\My.reg"
Hier setze ich nur eine Variable namens "tempreg" für die temporäre Datei, die ich mit "Echo" schreibe.Set "tempreg=%temp%\My.reg"
Und die soll im Verzeichnis %temp% angelegt werden, da hat jeder Zugriff.
Dass diese "Set"-Anweisung in Anführungszeichen funktioniert, sagt M$ nicht, aber ich. Dokumentiert ist es nicht.
Wird eine neue Datei mit dem Namen My.reg erstellt?
Jepp, aber erst später..Fehlt in der folgendenzeile nicht ein ">" vor ...Version 5.00 >%tempreg%
Nein.. in der ersten ECHO-Zeile wird die Datei neu angelegt, ggf. eine vorhandene überschreiben. In den folgenden Zeilen wird angehängt.Meine Batch sieht jetzt folgendermaßen aus.
Die SIS lese ich mir aus.
**
@echo on &setlocal
Set "tempreg=%temp%\My.reg"
@echo on &setlocal
Set "tempreg=%temp%\My.reg"
for /r "C:\Dokumente und Einstellungen\%USERNAME%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Credentials"
Hmmm, ist nicht portabel. Bei mir (mit Installation auf Laufwerk D würdest Du ins Leere laufen..Nimm besser statt
"C:\Dokumente und Einstellungen\%USERNAME%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Credentials"...
...folgendes: "%APPDATA%\Microsoft\Credentials".
Macht es außerdem lesbarer.
Wenn bei Deinen Kunden da was drin steht... ich würde erst prüfen, ob das Verzeichnis ..\Credentials" existiert und nicht HIDDEN/SYSTEM ist.
Denn sonst greift der FOR /R..IN DO-Befehl .. möglicherweise daneben.
%%a in (.) do set Letztes=%%a
...ich würde ....%%a in (.) do set "Letztes=%%a" ......schreibenfor /F "delims=\ tokens=8" %%i in ("%Letztes%") do Set Dirname=%%i
...ich würde ...set "Set Dirname=%%i" ......schreiben.jo, mag sein... glaub ich Dir mal einfach, dass bei %Letztes% das Richtige drin steht.
Echo Windows Registry Editor Version 5.00 >%tempreg%
Echo. >>%tempreg%
Echo [HKEY_USERS\%Dirname%\Control Panel\International\Geo] >>%tempreg%
WARUM AUF HKEY_USERS???? Darfst Du das überall????Echo. >>%tempreg%
Echo [HKEY_USERS\%Dirname%\Control Panel\International\Geo] >>%tempreg%
Gehst Du immer mit ADMIN-Rechten rein?... Mach ich nicht mal bei Freunden...
...
...
regedit /s %tempreg%
Kann das funktionieren?
Ja, kann... funk-ti-o-nie-ren *seufz
.. dubios sind mir diese SID/HKEY_USERS-Zugriffe... dazu brauchst Du die Rechte. Ich würde immer über HKEY_CURRENT_USER gehen.
Und dieses "C:\Dokumente......" hatte ich ja angesprochen. Klappt halt in 70% der Fälle. Bei 30% wirst Du angerufen.."jammer..geht nicht.."
Gruss zurück
Biber
@fadi
Das gefällt mir aber grundsätzlich gut. Probier ich aus.
In der Praxis würde ich wahrscheinlich eine Kombination aus beiden Ansätzen vorziehen - die bestehenden Regional Settings vorher sichern und ggf. später restaurieren.
Aber die Übersichtlichkeit Deiner Variante hat was Charmantes. Danke.
Gruß
Biber
Das gefällt mir aber grundsätzlich gut. Probier ich aus.
In der Praxis würde ich wahrscheinlich eine Kombination aus beiden Ansätzen vorziehen - die bestehenden Regional Settings vorher sichern und ggf. später restaurieren.
Aber die Übersichtlichkeit Deiner Variante hat was Charmantes. Danke.
Gruß
Biber
Hallo,
ich bin grad dabei ein Script zu schreiben mit dem ich unter XP 64 bit die Sprache wechseln kann. Bei XP 64 gibt es ja Language Packs, wo man dann in der Systemst. von einer Sprache zu anderen wechseln kann.
Da wir mehrere Niederlassungen auch im Ausland haben, will ich dazu ne Batch schreiben und hab dafür die Einträge unter
und
dementsprechend geändert. Das macht er auch ohne Prob nur leider ist trotzdem noch alles englisch....zumindest die Anmeldung ist schon auf deutsch aber das Startmenü usw. noch nicht.
Meine Frage: Gibt es noch andere Stellen in der Registry die man ändern muss?
Wäre echt dankbar für nen Hinweis!
ich bin grad dabei ein Script zu schreiben mit dem ich unter XP 64 bit die Sprache wechseln kann. Bei XP 64 gibt es ja Language Packs, wo man dann in der Systemst. von einer Sprache zu anderen wechseln kann.
Da wir mehrere Niederlassungen auch im Ausland haben, will ich dazu ne Batch schreiben und hab dafür die Einträge unter
[HKEY_USERS\S-1-5-21-8915387-466359577-720635935-18223\Control Panel\International]
[HKEY_USERS\S-1-5-21-8915387-466359577-720635935-18223\Control Panel\International\Geo]
dementsprechend geändert. Das macht er auch ohne Prob nur leider ist trotzdem noch alles englisch....zumindest die Anmeldung ist schon auf deutsch aber das Startmenü usw. noch nicht.
Meine Frage: Gibt es noch andere Stellen in der Registry die man ändern muss?
Wäre echt dankbar für nen Hinweis!
Die SID für den User ist variabel und überall anders. Erstens hast du die nicht überall zur Verfügung und zweitens kommst du immer nur an den angemeldeten User (HKEY_CURRENT_USER) ran. Das hat Biber weiter vor schon beschrieben.
Außerdem muss das MUI installiert sein. Wo dort die Umschaltung erfolgt, weiß ich aber nicht. Die Texte stehen jedenfalls in den entsprechenden Ressourcen der jeweiligen DLLs.
Außerdem muss das MUI installiert sein. Wo dort die Umschaltung erfolgt, weiß ich aber nicht. Die Texte stehen jedenfalls in den entsprechenden Ressourcen der jeweiligen DLLs.
Wozu willst du die abfragen? Der Schlüssel für den aktuellen User wird bei der Anmeldung nach HKEY_CURRENT_USER kopiert, da musst du ändern.
ja schreibfehler, klar muss ich da was ändern ;)
hab mal mit RegMond aufgezeichnet was in der Registry alles geändert wird.
momentan sieht mein Code so aus:
hab mal mit RegMond aufgezeichnet was in der Registry alles geändert wird.
momentan sieht mein Code so aus:
reg add HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\ /v LangID /f /t REG_BINARY /d "09 04"
reg add HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\ /v "@C:\WINNT\ime (x86)\sptip.dll,-600" /f /t REG_BINARY /d "Speech Recognition"
reg add "HKCU\Control Panel\Desktop\" /v MUILanguagePending /f /t REG_SZ /d 00000407
reg add "HKCU\Keyboard Layout\Toggle\" /v "Language Hotkey" /f /t REG_SZ /d 1
reg add "HKCU\Keyboard Layout\Toggle\" /v "Layout Hotkey" /f /t REG_SZ /d 2
reg add HKCU\Software\Microsoft\CTF\LangBar\ /v ShowStatus /f /t REG_DWORD /d 0x4
reg add HKCU\Software\Microsoft\CTF\LangBar\ /v Transparency /f /t REG_DWORD /d 0xFF
reg add HKCU\Software\Microsoft\CTF\LangBar\ /v Label /f /t REG_DWORD /d 0x1
reg add HKCU\Software\Microsoft\CTF\LangBar\ /v ExtraIconsOnMinimized /f /t REG_DWORD /d 0x0
reg add "HKCU\Software\Microsoft\windows\CurrentVersion\Run\" /v "ctfmon.exe" /f /t REG_SZ /d "C:\WINNT\system32\CTFMON.EXE"
reg add "HKCU\Control Panel\International" /v iCountry /f /t REG_SZ /d 49
reg add "HKCU\Control Panel\International" /v iCurrency /f /t REG_SZ /d 3
reg add "HKCU\Control Panel\International" /v iLZero /f /t REG_SZ /d 1
reg add "HKCU\Control Panel\International" /v iNegCurr /f /t REG_SZ /d 8
reg add "HKCU\Control Panel\International" /v Locale /f /t REG_SZ /d 00000407
reg add "HKCU\Control Panel\International" /v s1159 /f /t REG_SZ /d
reg add "HKCU\Control Panel\International" /v s2359 /f /t REG_SZ /d
reg add "HKCU\Control Panel\International" /v sCountry /f /t REG_SZ /d Germany
reg add "HKCU\Control Panel\International" /v sCurrency /f /t REG_SZ /d €
reg add "HKCU\Control Panel\International" /v sDate /f /t REG_SZ /d .
reg add "HKCU\Control Panel\International" /v sLanguage /f /t REG_SZ /d DEU
reg add "HKCU\Control Panel\International" /v sList /f /t REG_SZ /d ;
reg add "HKCU\Control Panel\International" /v sLongDate /f /t REG_SZ /d dddd. d. MMMM yyyy
reg add "HKCU\Control Panel\International" /v sMonDecimalSep /f /t REG_SZ /d ,
reg add "HKCU\Control Panel\International" /v sMonThousandSep /f /t REG_SZ /d .
reg add "HKCU\Control Panel\International" /v sShortDate /f /t REG_SZ /d dd.MM.yyyy
reg add "HKCU\Control Panel\International" /v sThousand /f /t REG_SZ /d .
reg add "HKCU\Control Panel\International\Geo" /v Nation /f /t REG_SZ /d 94