Jump to content

Set Windows Regional Settings and Copy Settings to welcome screen/new users

Recommended Posts

We are deploying Windows 8.1 and I needed to come up with a script to set the regional settings of a computer from the Region settings screen.

  • Set Keyboard Language
  • Set Location
  • On the Administrative tab - Set the Welcome Screen and New User Account Settings (so that they match the settings above)

All of the above will be set from the "Helpdesk" account, and then the last option is needed so that anyone from then on who logs in gets the settings.

I can see that the Region window is running as part of the "Windows host process (Rundll32)" when I check the Task Manager, this is Rundll32.exe, but I cant see how I can pass anything to this window to do anything on it. 

If I reference Rundll32.exe it just does nothing.

I'm sure there must be a way but I'm completely stuck.

Share this post

Link to post
Share on other sites

At a deployment level I would be looking at my unattended.xml file to set everything for the computer, and load anything needed for users to the default user profile.

You can have a user choose things by sysprepping the computer and using /OOBE


I guess I am not really sure exactly what your asking for here though, do you want each user to get asked what location/language to use when they log in?

Share this post

Link to post
Share on other sites

We hand out computers ready to go for users, so all they need to do is login and their Outlook and local Profile is good to go. Everything is set by us before they get it. Hence why we needed to set all the Regional settings for them before handing it over, as they wont know how to set them.

I thought about using the Unattended.xml file, but we use Altiris deployment and I'm pretty sure we cant specify those settings in there, as it generates its own. So were left with doing it via a script of some kind which can run after its been imaged.

So basically if I could somehow get Autoit to do the following:

  1. Open Control panel
  2. Click Region
  3. Switch to Administrative tab
  4. Click Copy Settings...
  5. Tick the two options at the bottom and click OK
  6. Then click the confirmation boxes 


Share this post

Link to post
Share on other sites

Ok that makes more sense.

Everything you want to do should be possible with cmd options so you can make .bat files to work with.


Also all this stuff is stored in the registry so if you create one key that is "perfect" and copy that over to your default user account it should populate to all new users.

This article has the registry key location:


Remember to edit default user just import the ntuser.dat file for the Default Public Profile and it can also be done via cmd.

You can use AutoIT as a nice wrapper to facilitate all these methods, but I imagine going way of automating the GUI is the last resort and should be avoided.

Edited by ViciousXUSMC

Share this post

Link to post
Share on other sites

Hi there,

did u find any solution? I'm trying to do the same on a Windows Server 2012 r2 and want to do it automatically, and not by clicking the confirmation boxes..

Func _ChangeRegionLanguage()
    Local $GetRegionLangCombo = GUICtrlRead($NewRegionLangCombo)
    Local $Culture, $Location

    If $GetRegionLangCombo = "Spanisch - Spanien" Then
        $Culture = "es-ES"
        $Location = "217"
    ElseIf $GetRegionLangCombo = "Finnish - Finnland" Then
        $Culture = "fi-FI"
        $Location = "77"
    ElseIf $GetRegionLangCombo = "Französisch - Frankreich" Then
        $Culture = "fr-FR"
        $Location = "84"
    ElseIf $GetRegionLangCombo = "Ungar - Ungarn" Then
        $Culture = "hu-HU"
        $Location = "109"
    ElseIf $GetRegionLangCombo = "Kroatisch - Kroatien" Then
        $Culture = "hr-HR"
        $Location = "108"
    ElseIf $GetRegionLangCombo = "Schwedisch - Schweden" Then
        $Culture = "sv-SE"
        $Location = "221"
    ElseIf $GetRegionLangCombo = "Tschechien - Tschechische Republik" Then
        $Culture = "cs-CZ"
        $Location = "75"
    ElseIf $GetRegionLangCombo = "Dänisch - Dänemark" Then
        $Culture = "da-DK"
        $Location = "61"
    ElseIf $GetRegionLangCombo = "Deutsch - Deutschland" Then
        $Culture = "de-DE"
        $Location = "94"
    ElseIf $GetRegionLangCombo = "Englisch - Vereinigte Staaten" Then
        $Culture = "en-US"
        $Location = "244"
    ElseIf $GetRegionLangCombo = "Italienisch - Italien" Then
        $Culture = "it-IT"
        $Location = "118"
    ElseIf $GetRegionLangCombo = "Niederländisch - Niederlande" Then
        $Culture = "nl-NL"
        $Location = "176"
    ElseIf $GetRegionLangCombo = "Polnisch - Polen" Then
        $Culture = "pl-PL"
        $Location = "191"
    ElseIf $GetRegionLangCombo = "Rumänisch - Rumänien" Then
        $Culture = "ro-RO"
        $Location = "200"

    Local $SetCulture = RunWait("PowerShell.exe -Command Set-Culture " & $Culture, "", @SW_HIDE)
    Local $SetWinHomeLocation = RunWait("PowerShell.exe -Command Set-WinHomeLocation " & $Location, "", @SW_HIDE)
    Local $SetWinSystemLocale = RunWait("PowerShell.exe -Command Set-WinSystemLocale " & $Culture, "", @SW_HIDE)
    Local $SetWinUILanguageOverride = RunWait("PowerShell.exe -Command Set-WinUILanguageOverride " & $Culture, "", @SW_HIDE)
    Local $SetWinUserLanguageList = RunWait("PowerShell.exe -Command Set-WinUserLanguageList " & $Culture & " -force", "", @SW_HIDE)
EndFunc   ;==>_ChangeRegionLanguage

I made this in order to set all Languages, but still need to find the way to change Windows Screen language and do it somehow for all users :S


Appreciate your help

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...