Назад | Перейти на главную страницу

Дополнительные настройки клавиатуры из Active Directory

У нас есть некоторые пользователи в нашей компании, которым необходимо использовать дополнительные клавиатуры, для этого один из других администраторов написал сценарий VBS, который запускается, когда пользователи в определенной группе входят в систему на машине (это устанавливается как часть GPO применялся к этим пользователям).

Недавно к этой группе присоединились некоторые пользователи, которым нужны были клавиатуры на дополнительных языках, поэтому я добавил в скрипт несколько дополнительных полей. Новый скрипт, похоже, отлично работает на машине, на которой никогда не было такой настройки клавиатуры, но для тех машин, на которых кто-то вошел в систему со старым скриптом клавиатуры, клавиатуры, установленные этим скриптом, по-прежнему применяются, ни один из дополнительных клавиатуры вроде бы применимы к новой машине.

Вот сценарий, который я пытаюсь использовать:

Dim WshShell                   
Set WshShell = WScript.CreateObject("WScript.Shell")
'Portugese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\2", "00000816", "REG_SZ"
'Japanese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\3", "00000411", "REG_SZ"
'Japanese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\4", "e0010411", "REG_SZ"
'Chinese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\5", "00000804", "REG_SZ"
'Chinese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\6", "e00e0804", "REG_SZ"
'Arabic Libya
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\7", "0000040c", "REG_SZ"
'German
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\8", "00000407", "REG_SZ"
'Swedish
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\9", "0000041d", "REG_SZ"
'Spanish
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\10", "0000040a", "REG_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\ShowStatus", 0, "REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\ExtraIconsOnMinimized ", 1, "REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\Label", 1, "REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\Transparency", 0, "REG_DWORD"

Если я посмотрю на regedit на машине, которая не отображает новые клавиатуры на языковой панели, и перейду в HKEY_USERS, то .DEFAULT имеет раскладку клавиатуры, в которой указана только клавиатура Великобритании по умолчанию. Но когда я вхожу в систему на машине, в HKEY_USERS внизу появляется новая запись, в которой перечислены 3 клавиатуры, которые появляются на языковой панели (но не другие, которые позже были добавлены в VBS выше). Я попытался отредактировать строки для этой записи, это не повлияло, после перезагрузки внесенное мной изменение исчезает (я должен сделать это с моей машины с помощью regedit, поскольку у пользователя нет возможности получить эти настройки).

Я также пробовал добавить дополнительную клавиатуру в .DEFAULT пользователь ключ, и это не помогает после перезагрузки.

Есть ли способ заставить машину забыть все примененные настройки клавиатуры, чтобы в следующий раз, когда кто-то войдет в систему, она будет использовать те, которые определены в этом скрипте? Или в сценарии чего-то не хватает, что может заставить машину забыть старые настройки?

На данный момент я считаю, что единственный способ, который сработает, - это переустановить машину, что, вероятно, является излишним для исправления отсутствующих клавиатур и нецелесообразно, когда есть 20 машин, которые нуждаются в этом исправлении, и в будущем могут потребоваться дополнительные клавиатуры.

Любая помощь приветствуется!

Я закончил тем, что изменил там несколько опций и в итоге получил следующее:

Dim WshShell                   
Set WshShell = WScript.CreateObject("WScript.Shell")
'German
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\2", "00000407", "REG_SZ"
'Japanese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\3", "00000411", "REG_SZ"
'Chinese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\4", "00000404", "REG_SZ"
'Swedish
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\5", "0000041d", "REG_SZ"
'Spanish
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\6", "0000040a", "REG_SZ"
'Portugese
WshShell.RegWrite "HKCU\Keyboard Layout\Preload\7", "00000816", "REG_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\ShowStatus", 4, "REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\ExtraIconsOnMinimized", 1, "REG_DWORD" 
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\Label", 1, "REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\CTF\LangBar\Transparency", ff, "REG_DWORD"