As of 23.08.2023 NWC Services GmbH has become CANCOM GmbH. Please feel free to visit us at www.cancom.com
Toggle Bar

BLOG

BLOGGING CONSULTANTS

NWC Services Blog

Blogs von Consultants der NWC Services GmbH

Konfiguration der Regional Settings für Window 7 via DSM

Mein Kollege Michael Jeske und ich haben uns in einem gemeinsamen Projekt intensive Gedanken darum gemacht, wie ein Windows 7 Client optimal über die DSM Datenbank in internationalen agierenden Unternehmen auf seine regionalen Bedürfnisse hin präpariert wird. Folgende Ziele haben wir uns dabei gesteckt: 

  • Es müssen alle regionsspezifischen Werte (Währung, Tausender-Trennzeichen, Papiergrösse, Datumsformate, Zeitzone, etc.) und das Tastaturlayout konfiguriert werden.
  • Die Sprachen werden unabhängig von den regionalen Einstellungen verwaltet / zugewiesen.
  • Im Sinne der Anwendung der DSM Datenbank als CMDB, sollen alle regionalen Einstellungen in der DSM Datenbank verwaltet werden. 
  • Wechselt ein Client seinen primären Standort, müssen die regionalen Einstellungen ebenfalls automatisiert angepasst werden. 
  • Das Keyboard-Layout muss statisch auf das Land konfiguriert werden (und kann später durch eine Einstellung im Benutzerprofil überschrieben werden). 
  • Alle Einstellungen werden rein Computer-bezogen betrachtet. Benutzer-bezogene Konfiguration sollte im ersten Schritt aus dem Standardprofil heraus erfolgen (und nicht via DSM, GPO, etc.)
  • Da es sich in unserem Fall um ein deutsches Unternehmen handelt, soll neben englisch die deutsche Sprache und Konfiguration immer, unabhängig vom Standort verfügbar sein, sofern dies Sinn macht.

Um diese Ziele umzusetzen, muss analysiert werden, welche Settings für einen Computer konfiguriert werden müssen. Dies sind im Einzelnen: 

Zeitzone Bestimmt die Uhrzeit und die "Daylight saving" Konfiguration der jeweiligen Region

http://technet.microsoft.com/en-us/library/cc749073(v=ws.10).aspx
Für eine vollständige Liste kann ab Windows Vista auch der Registry Key HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones eingesehen werden.

Locale IDs Die Local IDs sind eine eigene Usmetzung von Microsoft und werden von einigen Office Komponenten und VBA verwendet.  http://support.microsoft.com/kb/221435/en-us & http://www.science.co.il/language/locale-codes.asp
Language Codes Werden (wie die Local IDs) zur eindeitugen Identifizierung einer Sprache verwendet.  Eine gute Übersichtstabelle (für die Langauge Codes und die LCIDs) bietet die Israel Science and Technologiy Homepage http://www.science.co.il/language/locale-codes.asp#definitions.
Graphical Location Der aktuelle Aufenthaltsort (Land) als GeoID codiert http://msdn.microsoft.com/en-us/library/windows/desktop/dd374073(v=vs.85).aspx

 

Um diese Werte Lokations-bezogen setzen zu können, empfiehlt es sich, eine beliebige Struktur in DSM (z.B. auf Basis von OUs oder sich gegenseitig ausschließenden dynamischen Gruppen) aufzubauen. Wichtig ist, dass ein Computer nur Mitglied eines einzelnen Regions-bezogenen Containers ist. Eine solche Struktur kann im einfachsten Fall wie folgt auf Basis von Organisationseinheiten / Domains aufgebaut sein: 

Org      
  Managed Users & Computers    
    Munich  
    Berlin  
    Venice  
    New York  
    San Francisco  
    ...  

 

Alle nun zuvor als wichtig identifizierten Werte können nun in Form von ODS Variablen angelegt und pro OU konfiguriert werden. Da die LCID des öfteren, sowohl in HEX als auch Dezimalformat vorliegen muss, empfiehlt es sich, 2 Parameter anzulegen (oder es wird zusätzlicher Aufwand betrieben, in diversen eScripts eine Umrechnung vorzunehmen).

Alle weiteren Werte (wie der Country Code, die Currency, etc.) leiten sich beim Setzen automatisch ab (d.h. Windows kümmert sich) und werden daher nicht explizit berücksichtigt. Ist dies gewollt, kann eine detaillierte Konfiguration unter "HKU\.DEFAULT\Control Panel\International" (und entsprechenden weiteren ODS Variablen) vorgenommen werden.

Daraus ergibt sich folgende Ansicht auf Basis einer OU (hier am Beispiel "Munich"):

Selection 014

 

Da die Sprachen unabhängig von den regionalen Einstellungen und der Lokation des Computers installiert werden müssen (ein deutscher Benutzer arbeitet z.B. für längere Zeit am Standort New York und möchte auf der dort angeschlossenen US Tastatur mit deutscher UI arbeiten), werden die unterstützten MUI Pakete einzeln paketiert und (z.B. via Schemaerweiterungen, sowie serverseitigen Installationsvoraussetzungen an den MUI Paketen) zur Verfügung gestellt. 

Im Anschluss wird ein eScript und eine Policy pro regionalen Container erstellt. Wichtig ist, dass eine Policy pro Container erstellt wird, und nicht mit Target List Erweiterungen gearbeitet wird. Dies sorgt dafür, dass das eScript beim Verschieben eines Computers von einem Container in den anderen erneut ausgeführt wird. 

Im folgenden Beispiel wurde das deutsche MUI Paket immer installiert und 3 weitere Sprachen sind pro Computer in Form von 3 Optionlist-Schemaerweiterungen verfügbar. Die verfügbaren Sprachen wurden dabei als Werte von 01-15 jeweils in den 3 Optionlisten vorgegeben.

!Get the addidional Languages for this Client to set the available Keyboardlayouts at LoginScreen
Set('_TargetLanguage1','%CurrentComputer.CustomBroseGenSrvProps.TargetLanguage1%')
Set('_TargetLanguage2','%CurrentComputer.CustomBroseGenSrvProps.TargetLanguage2%')
Set('_TargetLanguage3','%CurrentComputer.CustomBroseGenSrvProps.TargetLanguage3%')
!
!### Get the ODS Variables that defines the regional settings
Set('_NationDef','%CurrentComputer.Var.RegionalSettings.Nation%')
Set('_TimeZone','%CurrentComputer.Var.RegionalSettings.TimeZone%')
Set('_LCIDDef','%CurrentComputer.Var.RegionalSettings.LCID_Hex%')
Set('_LPIDDef','%CurrentComputer.Var.RegionalSettings.LPID%')
!
!###Get Variable for first additional TargetLanguage
If %_TargetLanguage1%='01'
Set('_LPID1','en-en')
Set('_LCID1','0409')
If %_TargetLanguage1%='02'
Set('_LPID1','fr-fr')
Set('_LCID1','040c')
If %_TargetLanguage1%='03'
Set('_LPID1','cs-cz')
Set('_LCID1','0405')
If %_TargetLanguage1%='04'
Set('_LPID1','zh-cn')
Set('_LCID1','0804')
If %_TargetLanguage1%='05'
Set('_LPID1','pt-br')
Set('_LCID1','0416')
If %_TargetLanguage1%='06'
Set('_LPID1','ja-jp')
Set('_LCID1','0411')
If %_TargetLanguage1%='07'
Set('_LPID1','ko-kr')
Set('_LCID1','0412')
If %_TargetLanguage1%='08'
Set('_LPID1','hu-hu')
Set('_LCID1','040e')
If %_TargetLanguage1%='09'
Set('_LPID1','pt-pt')
Set('_LCID1','0816')
If %_TargetLanguage1%='10'
Set('_LPID1','ru-ru')
Set('_LCID1','0419')
If %_TargetLanguage1%='11'
Set('_LPID1','sk-sk')
Set('_LCID1','041b')
If %_TargetLanguage1%='12'
Set('_LPID1','es-es')
Set('_LCID1','040a')
If %_TargetLanguage1%='13'
Set('_LPID1','sv-se')
Set('_LCID1','041d')
If %_TargetLanguage1%='14'
Set('_LPID1','it-it')
Set('_LCID1','0410')
If %_TargetLanguage1%='15'
Set('_LPID1','ro-ro')
Set('_LCID1','0418')
!

!###Get Variable for second additional TargetLanguage

If %_TargetLanguage2%='01'

Set('_LPID2','en-en')
Set('_LCID2','0409')
If %_TargetLanguage2%='02'
Set('_LPID2','fr-fr')
Set('_LCID2','040c')
If %_TargetLanguage2%='03'
Set('_LPID2','cs-cz')
Set('_LCID2','0405')
If %_TargetLanguage2%='04'
Set('_LPID2','zh-cn')
Set('_LCID2','0804')
If %_TargetLanguage2%='05'
Set('_LPID2','pt-br')
Set('_LCID2','0416')
If %_TargetLanguage2%='06'
Set('_LPID2','ja-jp')
Set('_LCID2','0411')
If %_TargetLanguage2%='07'
Set('_LPID2','ko-kr')
Set('_LCID2','0412')
If %_TargetLanguage2%='08'
Set('_LPID2','hu-hu')
Set('_LCID2','040e')
If %_TargetLanguage2%='09'
Set('_LPID2','pt-pt')
Set('_LCID2','0816')
If %_TargetLanguage2%='10'
Set('_LPID2','ru-ru')
Set('_LCID2','0419')
If %_TargetLanguage2%='11'
Set('_LPID2','sk-sk')
Set('_LCID2','041b')
If %_TargetLanguage2%='12'
Set('_LPID2','es-es')
Set('_LCID2','040a')
If %_TargetLanguage2%='13'
Set('_LPID2','sv-se')
Set('_LCID2','041d')
If %_TargetLanguage2%='14'
Set('_LPID2','it-it')
Set('_LCID2','0410')
If %_TargetLanguage2%='15'
Set('_LPID2','ro-ro')
Set('_LCID2','0418')
!

!###Get Variable for third additional TargetLanguage
If %_TargetLanguage3%='01'
Set('_LPID3','en-en')
Set('_LCID3','0409')
If %_TargetLanguage3%='02'
Set('_LPID3','fr-fr')
Set('_LCID3','040c')
If %_TargetLanguage3%='03'
Set('_LPID3','cs-cz')
Set('_LCID3','0405')
If %_TargetLanguage3%='04'
Set('_LPID3','zh-cn')
Set('_LCID3','0804')
If %_TargetLanguage3%='05'
Set('_LPID3','pt-br')
Set('_LCID3','0416')
If %_TargetLanguage3%='06'
Set('_LPID3','ja-jp')
Set('_LCID3','0411')
If %_TargetLanguage3%='07'
Set('_LPID3','ko-kr')
Set('_LCID3','0412')
If %_TargetLanguage3%='08'
Set('_LPID3','hu-hu')
Set('_LCID3','040e')
If %_TargetLanguage3%='09'
Set('_LPID3','pt-pt')
Set('_LCID3','0816')
If %_TargetLanguage3%='10'
Set('_LPID3','ru-ru')
Set('_LCID3','0419')
If %_TargetLanguage3%='11'
Set('_LPID3','sk-sk')
Set('_LCID3','041b')
If %_TargetLanguage3%='12'
Set('_LPID3','es-es')
Set('_LCID3','040a')
If %_TargetLanguage3%='13'
Set('_LPID3','sv-se')
Set('_LCID3','041d')
If %_TargetLanguage3%='14'
Set('_LPID3','it-it')
Set('_LCID3','0410')
If %_TargetLanguage3%='15'
Set('_LPID3','ro-ro')
Set('_LCID3','0418')
!
!
!### Create an answer file in XML format to configure the language settings in the default user profile
If Exist('%Temp%\regional.xml')
Delete('%Temp%\regional.xml')
ModifyOemEx('%Temp%\regional.xml','','','',moInsertAtTop+moOverwriteExisting)

























EndProc/TS

!### Execute the language configuration

ExecuteEx('control intl.cpl,, /f:"%Temp%\regional.xml"','','')/?/TS

!###Preload Default KeyboardLayout to WelcomeScreen
RegModify('HKEY_USERS\.DEFAULT\Keyboard Layout\Preload','1','0000%_LCIDDef%',mrReplace)/TS
RegModify('HKEY_USERS\.DEFAULT\Keyboard Layout\Preload','2','00000409',mrReplace)/TS
RegModify('HKEY_USERS\.DEFAULT\Keyboard Layout\Preload','3','00000407',mrReplace)/TS
RegModify('HKEY_USERS\.DEFAULT\Keyboard Layout\Preload','4','0000%_LCID1%',mrReplace)/TS
RegModify('HKEY_USERS\.DEFAULT\Keyboard Layout\Preload','5','0000%_LCID2%',mrReplace)/TS
RegModify('HKEY_USERS\.DEFAULT\Keyboard Layout\Preload','6','0000%_LCID3%',mrReplace)/TS
!
!###Configure TimeZone get from Location Setting
!
Execute('tzutil.exe /s "%_TimeZone%"')/TS

!

 

 

×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

Zielgerichteter ClientSync in Multi-BLS Umgebungen
Gedanken zu "Nur eine Kopie des Paketverzeichnisse...

Related Posts

 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Wednesday, 24 April 2024

Captcha Image

Consulting Services: