Saturday, 8 March 2014

How to configure Hyper-V to use a wireless connection in Windows 8.1

I haven’t used Hyper-V for a while but when I recently built a Windows 8.1 test bed VM I needed a virtualisation platform  and Hyper-V was more or less ready to go within my Windows 8.1 host laptop.

The only hiccup I encountered along the way—and one I was familiar with from my days running Windows Server 2008 on my laptop simply so I could run Hyper-V—was configuring Hyper-V to make use of my laptop’s wireless connection. This time I followed Rick Gipson’s excellent post to get everything working  and I summarise/condense his steps here in the interest of preservation and to document a few notes relevant to my Win 8.1 environment. Check out Rick’s post for screenshots.

  1. Create a new Internal virtual network switch named Virtual WLAN from the Virtual Switch Manager in Hyper-V Manager. A new Unidentified Network connected to vEthernet (External WLAN) will now be visible within the host OS’ Network and Sharing Center. Note I renamed this connection to vEthernet (External WiFi) in Windows to reinforce its relationship to the wireless adapter and differentiated it from the Hyper-V object.
  2. In Hyper-V Manager, configure the target VM’s network adapter to use the newly-created virtual switch (i.e. Virtual WLAN). Note Rick suggested the need to add a new Legacy Network Adapter but I found this was unnecessary.
  3. In the host OS’ Network and Sharing Center, share the host’s physical WiFi adapter by checking the Allow other network users to connect through this computer’s internet connection box and specifying the Home networking connection as vEthernet (External WiFi). Note Rick’s screenshots show the Home networking connection field as a drop-down list but my current configuration displays as a text field. The WiFi adapter should now be listed as Shared in the host OS’ adapter settings.
  4. Start up your guest VM when you’re connected to a wireless and enjoy network connectivity including internet access.
If you found this post helpful, please support my advertisers.

Sunday, 23 February 2014

Lightroom Touchpad Scrollbar Fix

Lightroom and Synaptics touchpads (trackpads) don’t seem to play well together but climbbike1 at the Adobe forums posted a registry fix that worked for me.

I’m not sure what it does, but as stated the little scrollbar graphic that was popping up wherever my mouse was positioned no longer appears after applying this fix (a good thing as it seems to be related to the problem). I was having a similar problem with a few other apps I rarely use under Windows 8.1 and didn’t have the problem when using a proper mouse. Note the Control Panel –> Mouse applet/Synaptics tab reports that I’m running Synaptics Touchpad V7.2 on PS/2 and Device Manager states the Driver Version as (I just installed the latest driver when building the Windows 8.1 machine).

Here’s how to implement climbbike1’s fix.

Option 1 – edit the registry directly:

  1. With administrative rights on your Windows computer, run regedit.exe (either via Start –> Run or the search charm in Windows 8)
  2. Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPEnh
  3. Right-click the SynTPEnh key and select New –> DWORD
  4. Name your new DWORD UseScrollCursor
  5. It’s value should be set to 0
  6. If the key already exists when you complete step 2, modify the value instead
  7. Restart the Synaptics processes (see below)

Option 2 – create and run a .reg file:

  1. Open notepad and save the blank file to your desktop as fixscroll.reg (or whatever you want to call it)
  2. Copy the italicised text below and paste it into your .reg file
  3. Double-click the file to run it (with administrative rights)
  4. Note I’m not sure if this will create the key if it doesn’t exist—follow the steps in option 1 to confirm it exists and is set correctly

Windows Registry Editor Version 5.00



You’ll need to restart a couple of Synaptics processes and can do this by either restarting your computer or following these steps:

  1. Open Task Manager
  2. Locate and end the Synaptics TouchPad Enhancements (SynTPEnh.exe) and Synaptics Pointing Device Helper (SynTPHelper.exe) processes
  3. Restart those same processes by running them from your startup folder or locating the executables and double-clicking them

Lightroom was running while I made these changes and the fix had instant results—no need to restart Lightroom or Windows.

If you found this post helpful, please support my advertisers.

Tuesday, 14 January 2014

High-Key Black and White Process

After reading about how to do spectacular black and white conversions in Australian Photography (June 2013), I thought I’d give it a spin. I chose the photo as a sacrificial test snap because the focus was off and the two subjects (my wife and little girl) were looking away from the camera. Despite these ‘defects’ the response from friends and family has been strong and I’ve come to love this photo, appreciating the focus as a private, shared moment between wifey and baby. Here’s how I did the conversion in Lightroom (v5.3).

In the Develop module:

  1. Adjusted white balance of the original colour photo
  2. Changed the Treatment from Colour to Black & White (first option above white balance in the Basic panel)
  3. Increased the Exposure (+1.79)
  4. Increased the Contrast (+100)
  5. Decreased Highlights (-7)
  6. Decreased Shadows (-38)
  7. Decreased Whites (-10)
  8. Decreased Blacks (-100)
  9. Increased Clarity (+29)
  10. I should have modified the colour channels (HSL/Color/B&W sliders but did not during my first edit—what you see below)
  11. Added a graduated filter to the top 75% of the image to further reduce exposure and highlights and increase shadows
  12. Sharpened
  13. Added a not-so-subtle vignette which works well with the black and white
  14. Cropped square

Gemma and Charlie BW

Wednesday, 27 November 2013

Setting the Default Search Provider to Google in IE

I’ll forever struggle to remember how to configure Internet Explorer 11/10/9/etc to use Google and not Bing when searching from the address bar. Sure you can add providers from the Manage Add-ons menu but it never seems to work for me as the list of search providers that appears on the IE Gallery site—when clicking through from IE itself—doesn’t seem to include Google.

Instead I follow this URL in IE, click the button and tick all the boxes on the popup:

Google Search Provider

If you found this post helpful, please support my advertisers.

Monday, 18 November 2013

Convert old .mdi files

I finally decided to bite the bullet and have a go at converting all of my old .mdi files ("printed" when the Microsoft Office suite included the .mdi virtual printer, before it was deprecated). Microsoft kindly supplies a command line utility to help out called MDI to TIFF Converter, which--as the name suggests--converts .mdi files to .tif files.

The tool only has a command line interface but the arguments it accepts are simple. The tool will also recurse through a directory hierarchy.

I did have trouble with one document and the tool just bombed while running but it was simply enough to track down the offending file and start afresh after deleting it (deletion was appropriate in my case).

You can download MDI to TIFF Converter here:

Thursday, 25 October 2012

SharePoint 2013 RTM on MSDN

The SharePoint 2013 RTM bits and the Office 2013 bits are now available on MSDN.

Monday, 2 July 2012

Fixing broken Office 2010 icons

A few weeks back a Windows Update install left my machine hanging and I was forced to reboot even though the screen said 'don't restart or all hell will break loose!' All hell then broke loose.

Or at least the icons for my Office 2010 applications disappeared, having been replaced by the unhelpul default icon.

I don't seem to be the only one to have experienced this exact sequence of events but the usual places for help offered none. There were many suggestions to rebuild icon caches but navigating to the relevant directory in my case revealed it didn't exist. Someone even mentioned a virus uncovered during ten hours of MS support telephoning! I continued hoping Windows Update would come to my rescue with an update for the update but nothing was forthcoming. In fact, I noticed more and more updates were now failing, particularly with error codes 80070643 and 80070644 noted (i.e. during the SP1 update and for a Definition Update).

Worst of all I couldn't initiate an Office repair from the Programs and Features menu—not sure if my machine was in an inconsistent state but opting to Change my install would bring up the Office 2010 change/repair initialisation screen before it would quickly disappear.

Thankfully Hitescape, in one of the many forums I visited, suggested running winword /r from a command prompt fixed the problem for them. Apparently this kicks off the Office repair function. I gave it a go and watched my icons return to their proper place on my task bar one by one! Just for kicks, I then attempted my to install the long list of failed updates and they all went in nicely!

Ps. I should mention I also followed these steps to ‘fix’ my .NET 4 install before I resorted to the above: No idea if it made any difference.

Btw, I'm running Windows 7 Enterprise x64 with Office 2010 Professional Plus x32 (RTM at the time).
If you found this post helpful, please support my advertisers.

Wednesday, 9 March 2011

VS Remote Debugger: Invalid access to memory location

I've been running my Visual Studio 2010 remote debugger as a service for a while now and found the experience to be generally seamless. Every so often, however, things go pear-shaped and Visual Studio throws up it arms when attempting to connect to the remote machine:

Unable to connect to the Microsoft Visual Studio Remote Debugging Monitor named 'my-dev-env'. Invalid access to memory location.


I've found the only way to correct this is by restarting Visual Studio.

If you found this post helpful, please support my advertisers.

Thursday, 3 March 2011

How to determine where an Active Directory object lives

Active Directory's Find… function is pretty handy: by searching from the directory root or any OU, you can search for specific objects by name, etc.

Unfortunately the search results display is a bit barebones and it's never obvious to a non-AD admin like me how to determine where the object actually lives in the hierarchy. Luckily you can drill into a search result item to view an object's properties but unless you're a real AD keener, you still might know how to find the object's location.

To rectify this situation, you'll need to turn on the Advanced Features setting from the Active Directory Users and Computers snap-in's View menu:

Active Directory Advanced Features

The object properties display will now include an Object tab which contains the Canonical name of object field (in other words, the path to the object within the directory):

Active Directory Object Sheet

If you found this post helpful, please support my advertisers.

Tuesday, 15 February 2011

How to reference a user control deployed to the GAC

Warning: I don't consider myself a control developer in the classic sense (although I frequently write web parts for deployment within a SharePoint environment, the scope of that deployment is fairly small by default).

A lot of the functionality I build these days runs client-side, powered by my all-time best friend jQuery. Because of this, I find I'm most productive when I first establish the HTML structure in a static HTML file before moving the mark-up to a control. In the bad old days of complete ignorance, I would have had refactor this HTML and build it programmatically within a custom control—an approach I despise (HTML belongs in mark-up).

To overcome many of the drawbacks to custom control development, I prefer migrating my prototype to a user control (which has a front-end .ascx file) and then loading that control in my web part code-behind or custom field control. Check out the LoadControl documentation for information about how load a user control programmatically.

This works beautifully when the control's code behind is compiled to an assembly destined for deployment to the private bin directory. The user control can be built in isolation with the ascx file and code behind remaining wired up for easy access to Intellisense, etc. At build time, the .ascx file is copied somewhere and deployed somewhere useful (the CONTROLTEMPLATES virtual directory, if you like).

Things get trickier when that assembly is to be deployed to the global assembly cache (aka the GAC). In my case I wanted to do this for a custom field control; although most of the code for that control was already being deployed to the GAC, it made sense to keep these artefacts together in the same project. For my non-SharePoint readers, any assembly going into the GAC has to be strong named and signed (via the project's properties sheet > Signing tab); to add the assembly to the GAC, call gacutil:

gacutil –i "MyAsemblyName.dll"

With that out of the way, assume we've got two projects: the first (MyControls) is a class library outputting a signed assembly intended for the GAC; the second is a simple web site (Web).


The MyControls project contains our user control (for information about how to set this up, refer to my post How to add a web project item to a class library). The MyControls assembly is deployed to the GAC.

The web site project contains a copy of the .ascx user control file from the MyControls project and a web page with a @ Register directive pointing to the project-local .ascx file. The Web project doesn't reference the MyControls project because we want it to load the assembly it depends on from the GAC. The .ascx copy can be done manually but you'll likely want to automate this as a pre-build task.

While the MyControls project will now compile, the Web site project will fail to compile with the error: Could not load type 'MyControls.MyUserControl'. If you're in a SharePoint environment, you'll likely see get this as a parser error when the page is dynamically compiled at first request.

To fix this, you need to add an @ Assembly directive to the top of the .ascx file to reference the MyControls assembly deployed to the GAC. You'll need the assembly name and public key token to flesh out this directive. The assembly name can be retrieved from the project properties sheet (normally it's the same as the project anyway). Then extract the public key token using the strong name application (it's the short value):

sn –Tp "MyControls.dll"

If your AssemblyInfo.cs specifies a version number of, your @ Assembly directive should look something like this:

<%@ Assembly Name="MyControls, Version=, Culture=Neutral, PublicKeyToken=b3de351d91c5d4d2"%>

If you version numbers are automatically updated by some kind of policy or build event, beware you'll also need to update this directive as well, which may prove cumbersome.

This directive can be added to both copies of the .ascx file without impacting the MyControls build or edit-time experience.

Both projects will now compile and run, successfully loading the user control base type (i.e. the code behind) from the GAC.

You can download this solution here.

If you found this post helpful, please support my advertisers.