Immer mal wieder kommt die Frage auf, wie man NumLock bzw. die Num-Taste dauerhaft auf EIN stellen kann. Dieser Artikel zeigt sämtliche verfügbaren Möglichkeiten dazu auf.
Grundsätzliches
Die NumLock-Taste hat eine Toggle-Funktion. Das bedeutet, bei einem Druck auf diese Taste entscheidet der augenblickliche Zustand, ob NUM im Ergebnis ein- oder ausgeschaltet ist. Hier findet sich auch die Schwäche einiger Möglichkeiten. Da der momentane Zustand sowohl EIN als auch AUS sein kann, ist auch das Ergebnis EIN oder AUS und daher möglicherweise unbestimmt.
Einstellung NumLock per Regedit
Die Einstellung der NumLock-Taste ist eine benutzerindividuelle Eigenschaft und daher im Registryteil des jeweiligen Benutzerprofiles enthalten. Vor der Benutzeranmeldung ist das Profil des "Default User" aktiv.
Insofern gibt es auch zwei Steuerungsmöglichkeiten, einmal für die Einstellung vor der Anmeldung (Registry-Datei "ntuser.dat" des Default User) und nach der Anmeldung (Registry-Datei "ntuser.dat" des angemeldeten Users).
Die Einstellung der Taste VOR der Useranmeldung steuert dieser Registry-Eintrag:
[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]
REG_SZ – Zeichenkette: "InitialKeyboardIndicators" / Wert: "2"
Die Einstellung NACH der Useranmeldung steuert folgender Registry-Eintrag:
[HKEY_CURRENT_USER\Control Panel\Keyboard]
REG_SZ – Zeichenkette: "InitialKeyboardIndicators" / Wert: "2"
Hierbei bedeutet der Wert "2", daß die Funktion NUM eingeschaltet ist. Der Wert "0" definiert NumLock ausgeschaltet. Der Wert "1" oder andere Werte sind ohne Funktion.
Auf einem einzelnen PC kann der Wert manuell per Registry-Editor (Regedit.exe) gesetzt werden, falls man die notwendigen Zugriffsrechte in der Registry besitzt. Auch eine Eintragung per Batchdatei ist mit den notwendigen Administratorrechten möglich. Hierzu benötigt man eine Textdatei und den Regedit.exe:
Textdatei <<NumLock.REG>> – Inhalt:
Windows Registry Editor Version 5.00
[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2"
[HKEY_CURRENT_USER\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2"
Eintrag des Inhaltes der REG-Datei in die Registry mittels der Regedit.EXE:
Regedit.exe -s [Pfad]\NumLock.REG
Vorstehender Befehl steuert aus der Datei <<NumLock.REG>> heraus in beiden Profilen (Default User und aktuell angemeldeter User), dass die Grundeinstellung von NumLock EIN ist. Da die Einstellung beim Booten des Computers oder bei der Anmeldung des Users aus der Registry geladen wird, sieht man direkt nach der Ausführung dieses Befehles im laufenden Betrieb keinerlei Effekt.
Einstellung NumLock per Visual Basic Script
Im nachfolgenden ersten Beispiel wird hier scriptseitig ein Tastendruck simuliert. Insofern schaltet beim Ausführen des Scriptes NUM einfach vom momentanen Zustand (z.Bsp. EIN) in den anderen Zustand (z.Bsp. AUS). Um die Funktion grundsätzlich auf EIN zu stellen, ist das folgende, erste Script daher nicht geeignet:
<<NumLock.vbs>>
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{NUMLOCK}"
Folgendes Beispiel hat dieselbe Funktionalität, wie oben mittels Regedit.exe und einer .REG-Datei erreicht wurde. Der grundsätzliche Zustand der Taste (EIN oder AUS) wird in der Registry festgelegt. Und zwar nachfolgend für den Default User, also den Zustand der Taste VOR einer Benutzeranmeldung:
<<NumLockREG.vbs>>
const HKEY_USERS = &H80000003
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer _
& "rootdefault:StdRegProv")
strKeyPath = "\.DEFAULT\Control Panel\Keyboard"
strValueName = "InitialKeyboardIndicators"
strValue = "2"
oReg.SetStringValue HKEY_USERS,strKeyPath,strValueName,strValue
Das vorstehende Script kann lokal ausgeführt oder auch als Computer-Startscript verwendet werden, um den aktivierten Zustand von Num VOR der Benutzeranmeldung grundsätzlich festzulegen.
Einstellung NumLock per MSI-Datei
MSI-Dateien können serverseitig zur Softwareverteilung mittels einer Gruppenrichtlinie verwendet werden. Zudem ist mit MSI-Dateien auch lokale Installation per Doppelklick auf die Datei möglich. Da MSI-Pakete im Rahmen einer Software-Installation auch Registry-Einträge erstellen müssen, ist es damit ebenfalls möglich, ausschließlich Registry-Einstellungen vorzunehmen und sonst nichts weiter zu tun.
Die obige Registry-Einstellung für den Zustand der Num-Taste VOR der Anmeldung (Registry-Eintrag beim Default User Profil) kann somit auch in eine MSI-Datei verpackt und mittels der Gruppenrichtlinie zur Softwareverteilung über das Netzwerk an allen Domänencomputer realisiert werden.
Auf seiner Webseite www.gruppenrichtlinien.de hat unser geschätzter MVP-Kollege Mark Heitbrink bereits eine fertige MSI-Datei für diesen Zweck zum Download bereitgestellt: www.gruppenrichtlinien.de/Tools/numlock.msi
Einstellung NumLock per Kommandozeilentool
Für den Zweck, die NumLock-Taste zu steuern, gibt es auch ein kleines, aber sehr leistungsfähiges Kommandozeilentool, dessen Einstellmöglichkeiten keinerlei Wünsche offen lassen. Zu finden unter:
http://www.commandline.co.uk/klocks/index.html
Um die NumLock-Funktion grundsätzlich eingeschaltet zu haben, unabhängig davon ob Num EIN oder AUS ist, ist dieses Tool wie folgt aufzurufen:
klocks.exe +n
Der Parameter +n schaltet die Funktion IMMER an. Ist sie schon an, bleibt sie an. Ist sie aus, wird sie angeschaltet. Also keine Toggle-Funktion, wie das "SendKeys"-VBScript. Möchte man eine Toggle-Funktion, kennt das Tool hierfür den Parameter !n. Mit diesem kleinen Tool ist auch die Steuerung anderer Tasten (z.Bsp. CAPS-LOCK) möglich. Das Programm kann in einem Computer-Startscript oder Benutzeranmeldescript ausgeführt werden, um auch hierdurch wieder komfortabel die Tasteneinstellungen netzwerkweit steuern zu können.
http://faq-o-matic.net/?p=519