Donnerstag, 25. Juni 2009

Systemsprache per Batch auslesen

Es gibt bis zu 3 unterschiedliche Registry Werte bei WinXP in denen die aktuelle Sprache des Systems abgespeichert ist:

Unter HKEY_LOCAL_MACHINE\System\CurrentControlset\Control\Nls\Language gibt es das den Wert "InstallLanguage".
Bei einem Deutschen Windows XP steht hier als Wert 0407

Dann gibts die sog. Default Language die unter
HKEY_LOCAL_MACHINE\System\CurrentControlset\Control\Nls\Language\"Default" steht.

Bei Multilanguage Systemen gibt es noch den folgenden Wert
HKEY_CURRENT_USER\Control Panel\Desktop\"MultiUILanguageId" der die Spracheinstellungen des Dekstops etc. des aktuellen Users anzeigt. Bei normalen XP Systemen gibt es den Wert nicht.

Folgende Batchdatei ließt alle 3 Werte in die Registry und wandelt zeigt dann die Sprache an die jeweils gesetzt ist:

@echo off
:: (c) Stadler Stefan,2007
:: Abfrage und Anzeige der Windows Sprache

for /F "tokens=2* skip=4 usebackq" %%f in (`reg query "HKEY_LOCAL_MACHINE\System\CurrentControlset\Control\Nls\Language" /v "InstallLanguage"`) do @set x9=%%g
set InstallLanguage=%x9:ü=%

for /F "tokens=2* skip=4 usebackq" %%f in (`reg query "HKEY_LOCAL_MACHINE\System\CurrentControlset\Control\Nls\Language" /v "Default"`) do @set x10=%%g
set DefaultLanguage=%x10:ü=%

for /F "tokens=2* skip=4 usebackq" %%f in (`reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v "MultiUILanguageId"`) do @set x11=%%g
set UserProfileLanguage=%x11:~-4%



if "%InstallLanguage%"=="0407" (
set InstallLanguage=0407 German
)

if "%InstallLanguage%"=="0409" (
set InstallLanguage=0409 English-US
)

if "%InstallLanguage%"=="040A" (
set InstallLanguage=040A Spain
)

if "%InstallLanguage%"=="040C" (
set InstallLanguage=040C French
)

if "%InstallLanguage%"=="040E" (
set InstallLanguage=040E Ungarisch
)
if "%InstallLanguage%"=="0410" (
set InstallLanguage=0410 Italienisch
)
if "%InstallLanguage%"=="0415" (
set InstallLanguage=040E Polnisch
)
if "%InstallLanguage%"=="0418" (
set InstallLanguage=0418 Rumänisch
)
if "%InstallLanguage%"=="0419" (
set InstallLanguage=0419 Russisch
)


echo Install-Sprache ist %InstallLanguage%
echo Default Sprache ist %DefaultLanguage%

if "%UserProfileLanguage%"=="~-4" (
echo No Multi-Language System detected!
)

if "%UserProfileLanguage%" NEQ "~-4" (
echo Aktuelle User Sprache ist %UserProfileLanguage%
)

pause