Multiple Monitors in Remote Desktop with Windows 7 Pro

The Best Laid Plans…

I’ve recently transitioned from working at home to working on-site at a client. The client did a great job of provisioning a nice desktop PC and large dual monitors. But one of the things I missed from my home office was my standing desk. To remedy this, I planned to bring in my laptop, set it up on a stand, and re-purpose one of the two monitors they provided so I could use Remote Desktop to connect to the desktop PC and still enjoy dual monitors…but there was a small wrinkle in my plan.

I’m Sorry Dave…

Sadly, sometimes the things you think will be easy turn out not to be, especially when it comes to computers. In this case, the problem was that the desktop PC I’m developing on is running Windows 7 Professional. This is fine for development, but unfortunately, Windows 7 Professional does not support multiple monitors when hosting an RDP session, even if the client OS (in my case Windows 10 Professional) does.

Unfortunately, I discovered this only after having brought my laptop stand (this Furinno Laptop Stand (affiliate link), which I picked up on sale at for around $40…you can get one from Amazon for around $45) in to the office, so I figured before admitting defeat, I should try to find a workaround.

Where There is a Will, There is a Way…

Turns out that while Windows 7 Professional doesn’t support multiple monitors as discrete monitors, it does support spanning multiple monitors, which you can enable by saving your remote desktop settings into a .rdp file, and edit that file, adding the line:

span monitors:i:1

to the file and save it. Then use that .rdp file to launch Remote Desktop.

RDP in VS Code
VS Code works great for .RDP files, too!

But that leads to another problem…with spanning enabled, any maximized windows will span both monitors, which is hardly optimal.

It’s a Snap!

The final piece of the puzzle is to leverage the Snap feature of Windows to snap each window to the left or right of the spanned monitor pair (note that this workaround is really only practical when using two monitors). Simply use the Windows key + left or Windows key + right to snap the active window to the monitor you want it on.

Getting Things Done…

The solution isn’t perfect, by any means. But as the old saying goes, “never let the perfect be the enemy of the good.”

If you want to use multiple monitors with Windows 7 Pro (or another host OS that does not support multiple monitors), give this workaround a try, and let me know how it works for you!

Learn You Node with VS Code

Node.js may not be the “new” hotness, but it’s still pretty hot, and getting hotter all the time. Whether you’re a .NET developer who’s still on the fence about JavaScript, or just haven’t gotten around to taking a look at Node, now is a pretty good time to do so, and in this post, I’ll show you a nice combination of tools that make learning Node easy and fun, namely and the new Visual Studio Code editor.

What is Node.js?

On the off chance that you’ve found your way here, but don’t know what Node.js is, Node.js (sometimes referred to simply as Node) is an execution environment for JavaScript code, based on the V8 JavaScript runtime from Chrome. It’s designed to be fast, lightweight, and efficient. You can use node to write server applications in JavaScript, from real-time chat apps, to web APIs, to full web applications. While Node itself is pretty simple, with a [limited, but want another word] API set, it ships with NPM, the node package manager, which provides a fast and easy way to install packages, which are collections of functionality wrapped up in such a way as to make them easy to add to your Node projects. Node packages are available to facilitate all kinds of applications, including MVC-style routing engines, template engines, unit testing and more.

Continue reading Learn You Node with VS Code

Migrating from Orchard CMS to WordPress using Windows Live Writer

OrchardLogo_200x200For the last 4 years or so, I’ve been hosting my blog/site using Orchard CMS. Orchard has been a pretty good platform. It offers a great deal of customization and extensibility points, and for .NET developers it can be a nice place to start for building an application. Unfortunately, whether because of my own customizations or some other reason, I ended up stuck on an older version of Orchard, and despite many hours of trying, could not get the site updated to a newer version. So I decided to move the site to the WordPress platform. Continue reading Migrating from Orchard CMS to WordPress using Windows Live Writer

Sometimes it’s the Simple Things

Hi, my name is Andrew, and I have a problem. I sometimes overthink things…just a bit. If you share that tendency you may, like me, instinctively greet any issue you run into as an opportunity for deep analysis and troubleshooting, which may not always be the place to start.

Overthinking in Action

A case in point. I’ve been working on a project that uses Crystal Reports (yes, plenty of people still use that) in an ASP.NET Web Forms app to generate reports for a non-profit. I was tasked with creating several new reports, which was a pretty straightforward task, and seemed to be going smoothly, when I went to test the PDF version of a given report and the report viewer simply returned a bunch of gobbledygook text in the browser.

Given that I had been making modifications to the code, I assumed that I must have changed something and broken the PDF reporting, though given the changes I’d made (which didn’t have anything to do with report rendering) I couldn’t imagine what. So I dutifully pored over the report rendering code, making sure it was sending the right MIME type, stepped through in the debugger, etc. Given that the application saved the PDFs to a temp directory before rendering, I also tried copying them over to another machine and opening them, and verified that the PDFs themselves were perfectly fine. Which left me feeling something like this:

In all, I probably spent at least a half hour or so trying to chase down the problem, only to realize that the answer was quite simple. The VM in which I was working had no PDF reader installed, so naturally, there was nothing to render the PDF in the browser, or allow me to save it.

Once I installed Adobe Reader (which gets ever harder to do without installing a bunch of unwanted crapware, but that’s a topic for another post), the reports rendered fine. Problem solved.


I’m a fan of Sherlock Holmes, and in particular the oft-repeated quote:

“…when you have eliminated the impossible, whatever remains, however improbable, must be the truth.”

In the case of troubleshooting code, I’d go even further. Sometimes you need to eliminate the improbable and start with the simple things. Check those things first, and then once you’ve eliminated the simple, move on to more complex and time-consuming troubleshooting steps.

Also, don’t assume that just because you’ve touched something in a project, anything that isn’t working is your fault. This is particularly true of code someone else originally wrote. Such code may have multiple issues that are known to the users and the original developer, but which may not have been shared with you.

Have you ever encountered an issue that turned out to be much simpler than you initially assumed? Share your story in the comments below!

Windows Media Center, XBOX 360, Visual Studio, and You

With the understanding that the overlap in a Venn diagram describing folks who use Windows Media Center, XBOX 360 as a Media Center Extender, and Visual Studio on their WMC machine is probably vanishingly small, I thought it might still be useful to post the problems I experienced with this combo, and the solution.

Continue reading Windows Media Center, XBOX 360, Visual Studio, and You

Always Backup. Always

Last night I learned (or I should say re-learned) a hard lesson. Several lessons, actually. More on that in a moment.

What Not to Do

I built a VM using Hyper-V to have an isolated environment for client work. Stored the VM and its .vhdx file on an external drive. So far, so good.

But for performance, I figured it’d make sense to set the VM up for boot to VHD. Did I mention the VM was installed on an external disk?

Continue reading Always Backup. Always