Nov 092012

This is the first post from several in which I am going to detail some of my experiences with the new WinRT platform for Windows 8 (ex. Metro) applications. Disclaimer: this series of posts reflect my personal experiences and needs, so it might be different for other developers or users out there.

The UI

First of all the operating system. I am sure that everyone has seen (or at least heard) about the new OS from Microsoft and what it can do. First of all, as you know there are two flavors of user experience – the old “Desktop”-like experience and the new tablet/touch-friendly WinRT experience.

Starting with the first day of using Windows 8, I can honestly say that I have mixed feelings about the UI. While I like the concept behind the WinRT style (and had the opportunity of playing with it on a tablet), for a professional user like me, the constant switching from desktop to WinRT mode and back is sometimes annoying. I find it especially annoying that I have to click more than in the past to achieve the same results.

Nevertheless, I like the integrated approach that the OS has taken – search from one single place, share from one single place etc. The downside of this, especially for non-touch systems is that a lot of the options are hidden and you need to dig around to find them. For me it’s not a problem, but for less experienced users it becomes frustrating very quickly.

Anyway, I won’t go into more details about this, since you can find an entire encyclopedia of reviews and opinions on the internet regarding this. In the end I guess everything comes down to experience, taste and automations that we as users have developed over time.

Compatibility and breaking changes

This is another big part of switching to a new OS. While for the typical home user which 99% of the time does some browsing, emailing, Facebook, games this might not be of such importance, for a professional developer that wants to use this OS, it’s a very important thing.

So far I could get most of my applications to run on Windows 8 without too much hassle. Low level utilities such as hard drive optimizers etc. can sometimes cause issues, but so far I could live without them. Applications that have issues can be fixed most of the time by explicitly setting the compatibility level.

On the development side, I have quickly encountered some issues. Some are minor, some are annoying and some are causing real problems.

The User Access Control system

This is the first thing you encounter and the most annoying one. In the past versions of Windows, this was the first thing I was disabling (after removing the obnoxious windows sounds). The reasons why I am disabling this are simple:

  • I am able to manage security and applications by myself
  • I need to work most of the time in applications which require elevated permissions (aka. Visual Studio). Having UAC on is always breaking my workflow.

In Windows 8 even if you set the UAC feedback to the lowest value, it does not get completely disabled. This means that you still need to explicitly run applications with elevated permissions. This has several side effects:

  • Trying to start non-elevated processes from within an elevated process does not work out of the box. A typical example is trying to open the web help from within an elevated Visual Studio. If you are an application developer and need to go around this scenario, I have posted already a solution for handling this in code:
  • If you start applications directly from the WinRT desktop, you need always to right click them and run them as Administrator… This would be ok, if this would be remembered somehow.
  • If you pin your application to the taskbar, then there are two behaviors. If you configure your shortcut to always run as administrator, it works fine when clicking it directly. When you try to open up something using the jump lists (for example a recent Visual Studio solution), then the application will run without elevated permissions. This is always very annoying because you can either do it without thinking and then bang your head against the wall until figuring why things don’t work, or, otherwise, you have to always do things in two steps – open up the application, load the project/file/whatever.

Task manager

This is one of the best improvements in the new Windows. The new task manager is much cleaner, easier to use and works better. Thumbs up for this.


Windows 8 feels more secure. I have encountered some security issues related to DCOM/COM+ but nothing that cannot be solved. In the end if security rules get tighter it can be a better thing, since you have to be more aware of the exposed attack surface. The security changes have caused minimal interference so far, so I don’t have too much to say about them.

Other things

Of course covering all the changes in the new OS would lead to an entire book, so I won’t do that. Overall I can say that most things are better. Windows Explorer has better and cleaner UI and most of the things that come out of the box work at least as good as in Windows 7.

Stability is very good – I did not have any bad experiences with it. Startup performance is amazingly quick. One thing that is annoying is how hidden the power options are. I understand that it gets targeted more and more towards mobile devices where you put the system to sleep and start it quickly but for desktop systems, it’s too hidden.


Overall I think it’s a good direction, I would just liked more attention to desktop/professional users. At the moment the feeling is that you always have to switch between worlds.

In the next posts I will dive deeper into development tasks related to the new platform, the problems and solutions I have encountered so far.

Sep 222012

With the changes to the UAC system in Windows 8, it seems that whenever you try to launch an non-elevated application from an elevated application, you get an error similar to: “Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)”.

The reason is that under Windows 8, even if you set UAC to the lowest setting, you don’t disable it completely.

In my case, I was trying to start an URL using the default browser from an elevated application. After a lot of digging around on and other blogs and websites, I’ve managed to build a solution that seems to be working.

Continue reading »