Not The Wizard

Oz Solomon's Blog

Force-Uninstalling Windows Programs That Fail to Install (MSI)

Sometimes when you try to uninstall programs from Window’s “Programs and Features” panel (or whatever it’s called these days), the installation fails due to an error in the uninstaller.  You may get an error message or it may appear to just do nothing.

If you don’t want to muck around in the registry or with cryptic command line scripts, you’d be happy to know that Microsoft has a handy tool that can fix these kinds of problems and to force-uninstall the program.

The “Fix It” tool can be downloaded from here.


When Outlook Doesn’t Archive Everything It Should

If you’ve ever used Outlook’s archiving feature, you may have noticed that a lot of emails that should have been archived are left behind.  For example, you tell it to archive anything older than Dec 31, 2014, yet emails older than that still remain in the original folder.

The reason for this is that Outlook’s default behavior is to archive based on the “Last Modified” date, which means that if you made any sort of modification to the email after the specified archive date then email won’t be archived.  What’s a modification?  It could be something as simple adding or removing a flag.  Supposedly some anti-virus apps also cause this date to change.

I think everyone’s intuitive understanding of the way archiving should work, is that the mail is archived depending on when you got/sent it, no matter what you did with it afterward.  Luckily, you can tell Outlook to use this more intuitive method by adding a simple entry to your registry.

The registry setting is called ArchiveIgnoreLastModifiedTime, and it’s registry location depends on the version of Outlook you’re using.

For Outlook 2007, please follow Knowledge Base article 2500686.  Make sure you have at least SP3 installed.

For Outlook 2010 or 2013, please follow Knowledge Base article 2553550.

Solving Win10 C1900101-20017 Upgrade Error + A Mini Review of Microsoft Support

tl;dr 1 – C1900101-20017 means that the Windows 10 setup encountered an error on the first reboot and also means you’re screwed but read below for some hope.

tl;dr 2 – I reached out to Microsoft Support for help with this error and I give their first level support a B and second level support a big fat F.   Either way they didn’t help.


You’re reading article this because you tried to upgrade your system to Windows 10 after a while it booted back to your old version of Windows and greeted you with the cryptic error code C1900101-20017:


Or maybe you were luckier and got this ever-so-descriptive 0xC1900101 – 0x20017 version of the error:

0xC1900101 - 0x20017


Explanation of the Problem

The error presented to us is “The installation failed in the SAFE_OS phase with an error during BOOT operation” and what it means in plain English is that the Windows 10 installer was in the middle of installing Windows 10, and it needed to reboot.  But something wrong happened during the boot (for example, a driver crash leading to a Blue Screen of Death).   Because the boot was unsuccessful, the Windows 10 installer terminated and returned your computer back to the version of Windows you had before.

The good news: At no point is your computer bricked.  I’m thankful for Microsoft for ensuring that, even though I’m annoyed with their other decisions (see below) at the same time.

Why Does this Problem Happen?

Microsoft support would have you believe that this is because you have some faulty hardware.  I strongly disagree.  99%+ of the time it’s a simple matter of a software bug.  Typically, the driver that ships with Windows 10 has a bug in it, or the driver that you have installed currently on your system has some compatibility problem with Windows 10.

A hardware problem is a possibility (slim, but possible).  For example, you may have a bad memory chip and Windows 10 just happens to put some critical piece of code at that faulty memory location triggering the problem.

Another reason to believe that this is usually a software – not a hardware – issue, is Microsoft Support’s insistence that I reformat/reinstall my computer.  “In their experience” it almost always fixes the problem.  Well guys, if reinstalling solves the problem, then it’s not hardware.

So How do I fix it?

The big problem is that Microsoft gives us no tools to figure out what exactly went wrong.  Ideally there would be some sort of log file listing which driver was the last to initialize so we could guess what’s causing the problem, but there isn’t.  At least, I couldn’t find such a thing at the typical setup log location ($windows.~bt\Sources\Panther).

That leaves you with the dubious pleasure of narrowing down the culprit using trial and error.

Step 1: Remove/Disable devices

** Before you start ** you should create a Restore Point so you can undo any damage you may do along the way.  If you don’t know how to create a Restore Point then this guide isn’t for you.

The Microsoft support article which mentions this error computer recommends unplugging all your USB devices.  I would take it a step further and unplug everything that you can, even internally.  For example, if you have both an embedded and a dedicated video, remove the dedicated card and use the video card on your motherboard.  At least until you can rule out your video card.

You should also open the device manager and go through the list.  See a driver for a long-ago junked printer?  Delete it.  Clean up anything that seems out of place.  (Usual disclaimer: Deleting drivers can cause your computer not to function/boot.  See notice about about creating a restore point).

Step 2: Update Drivers

Make sure you’ve got the latest drivers for all your devices by downloading updated packages from the manufacturer websites.  Don’t forget drivers for built-in peripherals on your motherboard.  You should probably upgrade your BIOS to the latest.

Also Try: Install Windows 10 On Another HDD

Try reinstalling Win10 after doing Step 1 + Step 2.  But if that doesn’t help, try this.

Remove the hard drives from your computer and plug in an old/new HDD you have laying around (you do have one laying around, don’t you?).  Install Windows 10 on this hard drive using a Windows 10 DVD.

If the installation fails, hopefully you’ll get a better error before.  This is because there is no “old windows” for the installer to boot back too.  It will hopefully crash telling you what the culprit is.

In my case this installation succeeded which led me to eventually finding out the original culprit: The Intel RAID on my ASUS Sabertooth X58 simply doesn’t work at with Windows 10.  I have found many complaints on the web, but no solution.  My solution was to change the controller from RAID to AHCI mode and set up my RAID using Windows Storage Spaces.

Common Sources of The Problem

In researching this error, I found that many people we suffering from various instances of the problems listed below.  You may fall under one of these categories:

  • Broadcom WiFi drivers are known to cause problems during the upgrade.  This may no longer be an issue since Windows 1511 was released, but if you have Broadcom WiFi in your device, try Googling for solutions specific to Broadcom.
  • The Intel Rapid Storage Technology (RST) driver can cause problems.  This thread talks about a possible solution for motherboards with the X58 chipset.  As I mentioned previously, nothing worked for me other than changing the controller out of RAID mode.

If you had a different cause, please update me in the comments below and I’ll add to this list.

Regarding Microsoft Support

In my desperation I contacted Microsoft Support.  I assumed there was some magic log file they could look at to solve the problem.  I was greatly disappointed.

I started out using their chat service.  The first agent took over my computer and tried to do a few basic things which didn’t work out.  The next day I talked to another agent over the phone which tried a whole bunch of other things that also didn’t work.  We continued on and off for 4 days and still nothing worked.  Eventually I was asked, and was transferred to second level support.

I’d like to mention that I was impressed by the first levels support’s commitment.  Although it was obvious they were running oof a script and didn’t really know hot to help me specifically, they were tenacious.  They called me 3 times a day to see if my issue was resolved and to see if I wanted to keep diagnosing.  They stayed with me on the phone for hours while the Windows 10 was installing over and over and were genuinely trying to provide dedicated service.  All this for a product I’m not paying a cent for.  Contrast that with Google (AdWords) support where I had to call in 8 times over two weeks to have a trivial matter resolved.

So why do I give them just a B?  Mostly because it was obvious that most of their actions were a waste of time (e.g. clear out my temp folder and try to reinstall) as well as the fact that they did stupid things like leave my computer running without a firewall (not a problem for me but non-techies beware).  The fact that I had to take control of my computer back from them a few times when it was obvious I could complete their tasks faster and better didn’t help either.

Second level support, on the other hand, gets a big fat F.  The agent was arrogant and all he wanted to do was reformat my computer.  I had to argue with him that I already knew that it would work (as I had installed Win10 on a different HDD) and I was interested in finding the hardware/driver that was causing the incompatibility instead of wiping my system.  Eventually he agreed to look into it and put me on hold.  After a long wait on hold, the call was disconnected, and he never called back.  I gave up on them at that point.

Air-Gapped “Hey Siri” Attacks on iPhones [u]

Yesterday I was watching Tim Cook announce the new iPhone 6s. My iPhone happened to be plugged in at the time, so when Time said “Hey Siri”, my phone came alive and started processing everything he was saying.

Now imagine that same scenario one year from now when half the audience has iPhone 6s’s with always-on Hey Siri functionality…

That got me thinking that this could potentially be a new attack vector for iOS penetration.  I’m not saying it would be easy to discover, but you could imagine a bug in Siri where you would play some synthesized sounds after Hey Siri and the phone crashes, or worse.

Even without such nefarious intentions or technical capabilities, always-on Hey Siri is a dream for every prankster with a megaphone.

Update: Now that I’ve had the chance to actually test out iOS 9 it’s pretty obvious that Apple’s engineers have thought this through.  “Hey Siri” was changed to respond only to your own voice.


Don’t Give Your Server The Hiccups – A Lesson in Having Lots of Users

Pinterest failing miserably on the backend

Pinterest failing miserably on the backend

Yesterday I was messing around with Pinterest to see how they do their Facebook integration.  I set up a test account and went about my way.  This morning, I started getting emails from them, so I clicked on “Change your email preferences” with the intention of unsubscribing.

What greeted me was the 502 error you see to your right.  502 is the HTTP error code for “Bad Gateway”.  This implies that some sort of networking error is preventing me from reaching their site.  But that’s not the case.  Having seen similar failure scenarios years ago when I coded Status Shuffle, I had a pretty good guess of what the problem was.

Let me give you a hint: I switched to my other browser, loaded the same link, and it worked like a charm.

Continue reading

Have I Been Pwned?

have-i-been-pwnedDue to the recent discovery of 5 million leaked gmail passwords, I went looking for a place to verify that addresses of friends and family aren’t on the list.

I happened to come by a great site called , created by Miscrosoft MVP Troy Hunt, which can test your email against many data breached.  Better yet, you can sign up and have it notify you if your email is part of any future compromise.

Highly recommended!

Are Files Appends Really Atomic?

Conventional wisdom says that appending to a file is atomic, up to a certain write size.  That means, for example, that you can have multiple processes write shared a log file and not have the log output crossed.  Recently, I was thinking about this “conventional wisdom” and decided to look for some proof.  After some Googling, and eventually landed on this StackOverflow question which discusses the question at hand.  The accepted answer has a lot of good information, but also uses the words “supposed to be” and “assuming” a little to much to be conclusive.

Continue reading

So Long, and Thanks For All The Uptime

Today I’m shutting down one of our oldest servers, hosted on Softlayer. We’ll be transitioning from SoftLayer and Peer1 to our new VPS’s at Linode.

Both SoftLayer and Peer1 have been great to my company, as I have mentioned in the past, but Linode’s all SSD servers have an unbeatable price that just makes our old hardware too expensive to maintain by comparison.

It was a bit of a pain to consolidate 11 servers down to 3 (regretfully, part of the reason I can do this is that traffic isn’t what is used to be), and I learned a thing or two which I may share in a future post.  I’m hoping that Linode doesn’t disappoint.  Regardless, you can’t complain about the cost saving Moore’s Law dishes out on a regular basis!



Multi-Generational Flaws in iOS, Part 2

This is part two in a series that discusses UX and other flaws in iOS.  You can find Part 1 here.

In part 1 I discussed what I felt were the top two flaws in iOS today: The lack of user profiles and abysmal application management.  In this post, I’ll continue the list.

Continue reading

DoorBot – Not Ready for Prime Time

DoorBotExecutive Summary: DoorBot, a Wi-Fi connected doorbell with video capabilities, is a super interesting concept. But their support is awful, the product buggy, and performs poorly when it works at all.  Hold off buying one, or at least read this post to know what to expect.

Continue reading

« Older posts

© 2016 Not The Wizard

Theme by Anders NorenUp ↑