Skip to content


Category: Windows Administration

You can filter keypresses with keyboard scancodes, it gives you the possibility to redefine keys via the registry. You can bind a key to another key or disable a specific key (CTRL-ALT-DEL combination in kiosk-mode for example).

The scancode mappings are stored in the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map

If the “Scancode Map” value doesn’t exist it must be added as a REG_BINARY.


Below the layout of the “Scancode Map” values:

Offset Bytes Information
0 4 Header. Version information
4 4 Header. Flags
8 4 Header. Number of mappings, including the null terminator
12 4 x Individual mappings. 4 bytes for each mapping. DWORD.
last 4 Null terminator (0,0,0,0)


Example: Remap Left Shift to L-key

00 00 00 00 Header
00 00 00 00 Header
02 00 00 00 Two definitions
26 00 2A 00 0026 = L-key. 002A = Left Shift.
00 00 00 00 Terminator

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
“Scancode Map”=hex:00,00,00,00,00,00,00,00,02,00,00,00,26,00,2A,00,00,00,00



Example: Disable CTRL-ALT(-DEL)

00 00 00 00 Header
00 00 00 00 Header
05 00 00 00 5 definitions
00 00 1d 00 0000 = Nothing. 001d = Left CTRL
00 00 38 00 0000 = Nothing. 0038 = Left ALT
00 00 1d e0 0000 = Nothing. e01d = Right CTRL
00 00 38 e0 0000 = Nothing. e038 = Right ALT
00 00 00 00 Terminator

GPO registry settings:



There is a tool available to help you find the mappings :



After installing Windows Server 2012R2 on my homebrew server with an Intel dz77bh-55k motherboard, the onboard Intel 82579V network adapter was not working. I went to the Intel homepage and downloaded the drivers but the installer complained that there are no adapters present:



I found out that Intel has added few comments to the driver .inf to stop server operating systems picking up desktop motherboard Ethernet controllers ( ).


Launch device manager and check the properties on the erroneous adapter…



Unpack the drivers and search for files including the Hardware ID “VEN_8086&DEV_1503″:

NDIS64” is the driver for Windows 8.1 and Windows 2012R2.



Left = modified file. Right = original file

Modify  “PRO1000\Winx64\NDIS64\e1c64x64.inf” as above.
Remove “Exclude from select” and add information to the [Intel.NTamd64.6.3] section from the [Intel.NTamd64.6.3.1]  section.


Original and modified .inf file available for download.


The installer will now find the NIC, but will not be installed due to modifications made to the .inf file.


Disable windows driver signing:

…now reboot and install the drivers.


After installing the drivers enable windows driver signing:

..and reboot once more.



How to (re)enable Quick Launch Toolbar on Win7 and later OS;es

  1. Right-click the taskbar, point to Toolbars, and then click New Toolbar.
  2. In the New Toolbar dialog box, in the Folder text box, type %userprofile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch, and then click OK.
  3. Right-click the taskbar and click to disable the Lock the Taskbar setting.
  4. On the taskbar, right-click on divider. Make sure that the Show Text and Show Title settings are disabled, and that the view is set to Small Icons.


Information from:


I came across an virtual machine in .ova format. OVA is an open standard for packaging and distributing virtual appliances. The .ova-package(file) is a tar-archive which can be decompressed and you will get two files: .ovf and .vmdk.

Information about the machine settings (vCPUs, Memory, NIC etc.) is stored in the .ovf file. The .ovf file is a .xml-file. You can launch the file in your favorite browser/xml-parser.

Now you need to create a machine manually with the specifications found in the .ovf. Virtual appliances are very picky on the specifications and might refuse to boot, crash, or get into problems later if the configuration is not exact (2 CPUs for example).

A Legacy Network Adapter may be needed for the system to recognize the NIC, in that case you need a Generation 1 virtual machine. I have also seen Dynamic Disks on a *nix system grow endlessly. Using a fixed disk corrected the problem. YMMW.


The diskimage(.vmdk) has to be converted into a native Hyper-V diskimage(.vhd/.vhdx).

I tried Microsoft Virtual Machine Converter but it failed and OVF Import/Export tool required an System Center VMM management server which i didn’t have.


It turned out that VirtualBox had tools to to convert the image successfully.

You can either download and install VirtualBox, or for a GUI version scroll further down and follow the instructions how to use “CloneVDI”.



Use VirtualBox command line utilities to convert the image.

Download and install VirtualBox from


You can deselect the USB/NIC drivers and other options during the installation. They will not be needed for converting diskimages and you will get less clutter on your machine.




You don’t need to start VirtualBox.

VirtualBox has a commandline utility that will be used to convert the image.

VBoxManage clonemedium: (earlier versions used VBoxManage clonehd) This Commandline duplicates a virtual disk/DVD/floppy medium to a new medium (usually an image file).

VBoxManage clonemedium [disk|dvd|floppy]

[--format VDI|VMDK|VHD|RAW|]
[--variant Standard,Fixed,Split2G,Stream,ESX]

In this example, the source diskimage is named “infile.vmdk” and is located in the C:\HYPER-V directory. Output image will be of vhd-format and named “outfile.vhd”. The commandline is: "VBoxManage.exe clonemedium --format vhd infile.vmdk outfile.vhd"



Use CloneVDI to convert the image.


CloneVDI is the (VirtualBox) GUI-tool for cloning images, but it does not support all image formats that VirtualBox VBoxManage does (and vice versa).

Download CloneVDI from the following location: VirtualBoxFourm


The CloneVDI is a pretty straightforward utility.

If you get an error about an unsupported format, try VirtualBox commandline utils instead.


OWA / ActiveSync logs

To configure IIS logging for Exchange, start “Internet Information Services (IIS) Manager” (Server Manager or Administrative tools) and select Logs. You can turn on logging on specific directories only, i.e. OWA or Active Sync. Before doing any changes on the logging for the directories, you need to have the logging enabled on the Site level. After making the changes, you can turn off the logging on the Site again.

The IIS Logging does not purge logs, you need to create your own script and use scheduled tasks. There is an option for “Log File Rollover”, but you can not limit the total amount of data or logs. A good idea is to keep the IIS logs on a separate volume in-case the disks fill up.

Shrinking disks on your Hyper-V guests

A few of my guests run on SSD drives. Occasionally I reclaim diskspace by defragmenting and compacting the VHD;s. I have managed to free up to 20GB diskspace on a single guest, which is pretty much SSD wise. However, first of all, you should consider before putting R/W intense operations, such as VMs, on your SSD;s.


Since this is a process that will take quite some time I wanted to make it as automated as possible.


1. Defrag with Raxco perfect disk. This script is run remotely on the target machines. Errorhandling is omitted for readability.


2. Compact VHD:s. Run in powershell on the Host. Make sure the actual VM is turned off.


There are a few options for you to get ActiveSync statistics from an Exchange 2010.

First some Powershell and then Log Parser if you don’t want to dig into the IIS-Logs yourself 😉


Get-ActivesyncDevice: Retrieve list of devices that have ActiveSync partnerships.


Get-ActiveSyncDeviceStatistics : Returns statistics about each device.


Export-ActiveSyncLogs : Analyzes IIS-Logs and creates reports in CSV-format.

Export-ActiveSyncLogs will generate six CSV files: “Users.csv”, “Servers.csv”, “Hourly.csv”, “StatusCodes.csv”, “PolicyCompliance.csv” and “UserAgents.csv”.

The IIS-Logs also hold username and IP-adress for the mobile device. Useful to know when the firewall guys come running down the corridor with the IP-adress for a misbehaving sync 🙂

If you have several CAS servers, you need to process the IIS-logs from each one of them.



LogParser 2.2 :

LogParser Studio:





LogParser Studio is also able to export the query as a Powershell script.



Exchange 2010 installation (and prerequisites)

There is a good article at the Microsoft web:

* Install Windows Server 2008 R2 and join the machine to your domain (with all the configuration that comes with it ).


* Install Windows Server 2008 R2 Prerequisites For Exchange 2010:
( Check the link above for your preferred configuration, below is for a machine that will host the MBX role )


* Set the TCP .net sharing service startup to automatic :


* Install Microsoft Office Filterpack (for HUB and MBX Servers)
The filters allow the Microsoft Search(Exchange) to index the content of items in common Office formats.
Office 2007 filter pack:
Office 2010 filter pack SP2:


* Register the filterpacks


* Install Latest Exchange 2010 Servicepack and Update Rollup
Servicepack 3:
Servicepack 3 Update rollup 5:


Microsoft Security Essentials is not compatible(supported) on Windows Server 2012 R2, however there is a workaround to get it installed:

  1. Download MSE from Microsoft:
  2. Rightclick on “mseinstall.exe”
  3. Click on Properties
  4. Click on the “Compatibility”-tab
  5. Check “Run this program in compatibility mode for:”
  6. Select “Windows 7″
  7. Open a Command prompt as Administrator
  8. Run “mseinstall /disableoslimit”






If windows update later on fails updating MSE, you can redo the process above and it will upgrade your windows essentials. You don’t need to uninstall it inbetween.



While scripting a syslinux bootimage with a menu and miscellaneous utilities, I found a virtualization platform called QEMU. It can be called directly from the script to verify the functionality and is very convenient for the purpose.

Script to create and launch the .ISO:

There is a directory named \TOOL where all the important files reside, for ex: \TOOL\BOOT(syslinux) and \TOOL\IMAGES(iso-images). This is the also the base directory from which MKISOFS builds the image from.


I also parse the \TOOL\IMAGES directory and build a dynamic menu(syslinux.cfg) from the contents. You might need a different configuration for booting the underlying image(YMMW):

Utils used to create and test the menu : SYSLINUX , QEMU and MKISOFS.