Sunday, January 24, 2016

If you delete the WINDIR environment variable, it's (almost) game over

I came across an interesting problem recently. I was editing some environment variables on a Windows 10 PC, using some third-party software. After doing that, a few things started behaving oddly, such as some system programs would not open. Things got worse after rebooting: I could not right-click on the start button, I could not open Task Manager, I couldn't start anything that required elevation and Windows Firewall kept telling me it was turned off.

Most of the actions that failed to do anything would hang for a fair while, eventually displaying dialog boxes with the message 'The system could not find the environment option that was entered'. Like this:

As it turned out, the cause of all these problems was that WINDIR environment variable had been deleted. (Of course, not intentionally.) And it really was was catch-22: I could not edit the system environment variables without elevation. The best I managed to do was kill explorer.exe using Process Explorer, start a command prompt, set %WINDIR% in the command prompt and start explorer.exe. Alas, that only helped marginally, and trying to open the advanced system properties (SystemPropertiesAdvanced.exe, as it turns out) in the same way did not work.

All was not lost: I could still access the modern settings app and reboot into the recovery menu. From there, I was able to use System Restore to go back a day to when WINDIR was still present. (Of course, I'm sure there are other ways I could've fixed it, but I just took the easiest and quickest solution as the time.)

After all that, I was curious about whether the standard Windows environment variables editor lets you delete the WINDIR environment variable. I just tried (in a VM of course): yes, it does.

Sunday, January 17, 2016

The death of Google Cloud Print on my MX895 printer: a story of ineptitude

I bought a Canon PIXMA MX895 all-in-one printer in May 2012. In fact, I was one of the first owners of the printer in the UK, having pre-ordered it the previous month. The printer was on sale from then until around April 2013.

One of the features the printer had was Google Cloud Print. The printer didn't support it out of the box – it needed a firmware update to add support for it (although it was available on day one). And, since then, I used the Cloud Print feature sporadically.

Fast-forward to late last year. I tried to use Google Cloud Print, but all I got was useless error messages from the printer about it not being able to connect to the server. Suspecting something was up, I set about Googling and can came across this discussion. As it transpired. Google deprecated the authentication API the device was using in April 2012, before there was even any stock of the printer in the UK. And, while Canon have released firmware updates for more recent models, for some models Canon will not release updated firmware, stating in a support article dated 1 September 2015:
Google has recently announced future planned changes to the server authentication method of their Google Cloud Print™ (GCP) service. An impact of these changes will be that specific Canon printers will no longer be able to support Google Cloud Print™ (GCP) because the printer firmware cannot accommodate these planned changes.
Recently is certainly a stretch. I suspect what they mean is that Google recently followed through on something announced over three years ago. For models other than my one, the timeline is even worse. The MG5450, for example, was announced in September 2012 and on sale until around September 2013.

Needless to say, I wasn't exactly impressed on learning all of this. To top it all of, as of writing, Google UK are still listing the MX895 as a Cloud Print printer1.

1No idea if that link will redirect outside of the UK.

Migrating a Windows 10 installation from MBR to GPT/UEFI

I recently updated to Windows 10 on a Z170-based motherboard, but my Windows installation was an MBR-based one rather than a modern UEFI one. I wanted to switch to a UEFI installation for the marginally fast boot time – without losing data during the switch – but most of the information online about doing that involved either purchasing software to do it or dubious use of command-line utilities.

Somewhere, though, I came across the strategy of backing up the current Windows installation, making a clean one in UEFI mode in order to create the relevant boot partitions etc., and then restoring the Windows partition from the backup. I was upgrading my system drive to a larger SSD so it seemed like a good time to give it a go. And indeed, it worked fine, so I thought I'd document the steps I followed here in case it helps anyone else.

The process requires some spare space on another drive in order to save an image of your system drive. Naturally, if you follow these steps and something goes wrong, I don't take any responsibility – it goes without saying that you should make doubly-sure you have everything backed up.

The steps are roughly as follows:
  1. Download the Windows 10 Media Creation Tool.
  2. Use the tool to create a Windows 10 installation image on either a flash drive or a DVD. I used a flash drive.
  3. Back up your system drive using drive imaging software. Macrium Reflect (free) should do, but I used the bootable version of Acronis True Image 2016 (not free) as I already had it. The software you use should allow you to selectively restore partitions from the backup to a partition of a GPT drive. If you are not using a bootable version of the imaging software, then it also needs to be able to restore backups to the system drive. Make sure you validate your backup to make sure there is nothing wrong with it.
  4. At this point, I installed Windows 10 in UEFI mode to my new disk drive. It took minutes to install to a decent SSD from a decent USB 3.0 flash drive (surprisingly fast when compared to how long the upgrade from Windows 7 to 10 took). I disconnected all the other drives in my PC out of an abundance of caution. To install Windows in UEFI mode you need to boot from the Windows 10 installation media in UEFI mode. For me this was achieved by pressing F8 when on my BIOS splash screen and then selecting the entry for my flash drive that was prefixed with UEFI. If you're reusing your existing drive for the UEFI installation, you will need to delete all the partitions on it. You should be able to do this in Windows 10 setup, but I haven't tried that.
  5. When prompted for a product key, select the option saying you don't have one, and then select the relevant Windows edition.
  6. A couple of screens later, you'll need to select your disk drive and create a partition. If you booted the installer in UEFI mode correctly, another three partitions (recovery/system/MSR) should be automatically created when you create the one to install Windows to, leaving you with four in total. If that doesn't happen, you might not have booted in UEFI mode.
  7. You can click through the remaining setup options – they don't matter much as we are just going to overwrite the Windows installation.
  8. Once installation is complete, you need to restore the Windows partition from your backup to your drive using your drive imaging software. You need to only overwrite the current Windows partition with the one from the backup – take care not to restore the whole disk which will wipe your GPT layout.
  9. Reboot and if everything worked as planned your old Windows installation should be back!
  10. You should now be able to disable CSM in your BIOS, which should reduce POST time a bit.
Hopefully that helps someone else – doing this and disabling CSM did indeed make a reasonable improvement to my boot times.

Wednesday, January 06, 2016

Today I learned... the properties for devices in the Sound control panel applet, you can right-click on the volume bars and change the units to decibels:

Friday, January 01, 2016

A change of web host

I shifted to Amazon Web Services. Here's a recent screenshot of the 'Time spent downloading a page' graph from the Googlebot crawler stats displayed in the Google Search Console:

Can you pinpoint when the switchover happened? Yes, my old host was that bad.

The baseline 'Pages crawled per day' has also increased – presumably it was throttling itself before...