Sunday, December 20, 2009

01-10-10 Major Post Update! – Gentle readers…it has come to my attention via the comments that the post title and content might be a bit misleading. That was not my intention, but after careful and objective reading of the post now, I clearly find that was the case.

To that end I want to make some important clarifications and additions up front. Then please go on and read the rest of the post.

1) My original desire here was twofold: a) run Windows RDC from my Windows 7 Home Premium laptop to control my desktop “faux-server” Windows 7 system (currently running Win7 Ultimate RC1), and b) be able to use the final Win7 RDC binaries at work on my XP Pro system to RD some XP Pro systems. If that is what the post title and/or Google led you here for…then read these bits and then drop down to the main post. If not, check out item #5 below before deciding to stay or leave the page…you might be rewarded for doing so.

2) The original nomenclature I used to refer to “host” and “client” in RDC was incorrect. Here is the “official” definitions per Microsoft; “Remote Desktop Connection is a technology that allows you to sit at a computer (sometimes called the client computer) and connect to a remote computer (sometimes called the host computer) in a different location.” So the PC you are working at that you are initiating the RDC session from is the client end and the one you are actually remote-controlling is the host end. M’kay?

3) As the table below in this post shows (but is a bit misleading without the above information) ALL versions of Windows 7 allow you to run the Windows 7 RDC client natively. That’s why (as some commenters pointed out) the binaries I noted are actually present on all the Win7 systems. So following the post instructions really are not necessary UNLESS you want to run the Windows 7 RDC client binaries from a non-Win7 system (XP/Vista/Server) and do so from a USB stick (unless you then offload them to that system locally).

4) Which now gets back to my misleading post title “Run Windows Remote Desktop Connection on Win7 “Home” editions.” Yep. Based on #3 above, you just don’t need to do this, UNLESS you mean to say you want to run Windows Remote Desktop on Windows 7 Home Premium as the HOST. Then this post would be completely useless per the official Microsoft product description for Win 7 RDC: “You can connect to computers running Windows 7 Professional, Windows 7 Ultimate, or Windows 7 Enterprise. You can't use Remote Desktop Connection to connect to computers running Windows 7 Starter, Windows 7 Home Basic, or Windows 7 Home Premium.” Only you actually “can” with Windows 7 Home Premium (x32 or x64)…but in a different manner than contained in the original post. If that is what you came here looking for…see item 5 below.

5) To REALLY run Windows RDC in “host-mode” on a Windows 7 Home Premium system.

Note: ONLY do this if you understand what you are doing, what the consequences are, and any security issues that might arise if you decide to do this! Pet hamsters might escape their cages. You might Black or Blue Screen of Death your Windows 7 Home Premium system that works just fine right now. Seriously. This really shouldn’t even be considered by anyone except advanced or professional Windows users and administrators. Seriously. I mean it. M’kay? Still want to do it? Fine. Keep reading then.

Probably want to start by manually making a System Restore Point.

On the Windows 7 Home Premium system, go to Start --> Control Panel –> System.

From that window, check the sidebar and find and select “Remote settings” on the left-hand side sidebar.

In the “System Properties” window select the “Remote” tab.

Check (enable) the “Allow Remote Assistance connections to this computer.”

Open up the unpacked folder and find the install.cmd file and run it as “administrator” (note: On my Windows 7 HP x32 bit laptop it worked fine out of the box. On my Win7 HP x64 AMD system…it errored out as it said the termsrv.dll file didn’t exist. A CLI search for the file did find it present (but cloaked by the OS) in C:\Windows\System32. So I had to then disable UAC, reboot, re-run the install.cmd file as “administrator”. It worked. I then reset UAC and rebooted….)

You will need to decide if you wish to allow “concurrent” sessions (let a logged-on user work while you also work on it without force logging out the current user…I select “Y” myself, and if you want to enable “blank” password for account login (not have to provide the password)…I select “N” for this.

Once done (and the process may take a while, particularly when it waits to listen to the service on port 3389) you will be directed to close the window out. Then you are done!

Your Windows 7 Home Premium system should now be “patched” to run RCD as a HOST for incoming RDC sessions.

Observations: This is a hack/patch/mod of a Windows OS file along with some other automagical system configurations that changes the code of the termsrv.dll file, adds the rdpclip.exe file to the system, starts the service, and adds Windows Firewall Rules. It is completely unsupported by Microsoft. Future Service Pack release and/or monthly OS security/updates might overwrite and/or break this whole house of cards. I am a bit smart, but I am not a programmer and cannot certify that the documentation on file patching is all that goes on. It might allow Martians to mind-control RDC your system. I just don’t know. As far as I can tell everything seems legit and quite effective, but your mileage may vary.

Finally, I owe early commenter to this post “Kevin” an apology. I because my nomenclature was mixed up, I didn’t quite “get” the tipoff he was trying to pass to me on this very technique. Kevin’s tip and information turned out to be MUCH more valuable (granted to a really small set of Windows Home Premium users) than I realized at the time…including myself!. Great tip Kevin and a full hat tip to you, mate!

Turn on Remote Desktop in Windows 7 or Vista - the How-To Geek – for lucky folks who do have a version of Windows 7 or Vista that does support the Microsoft OEM enabled RDC Host feature…it isn’t enabled by default out of the box…

--I’m sincerely sorry for any confusion the original post below caused…that said, it still stands solid for carrying a working set of the Windows 7 RDC binaries on your USB stick.

--Claus V.

Original Post below….

I’ve got four Windows systems humming along in our home. Three are laptops running Windows 7 Home Premium edition (via one of the last remaining Family Pack sets), and the fourth is my old home-brew Shuttle SFF system that was running XP Home, and now is sporting Windows 7 Ultimate Edition (RC1 build). Two are x64 bit loads of Win7 and the other two are x32 bit loads.

I’m amazed at the performance I’m getting out of the Shuttle. It is a single core system and much, much older than the dual-core laptops. Yet is still gets a higher score on the performance index rating than any of them. Might be because of the drive or the dedicated AGP video card.

Anyway…the Shuttle is now repartitioned with two volumes. The first is a bit smaller and carries the OS and user files. The second is much bigger and I’m using it for file storage and serving. No, it’s not a true “server” in the sense of Microsoft’s Home Server, but since Windows 7 allows Homegroups and file/volume sharing, I’ve been able to set it up as such to some degree.

…in which the need arises

Now, what I really wanted to be able to do is to remote-desktop control the Shuttle and work/maintain it from my laptop when I am multi-tasking and file syncing.

Since Windows 7 Home Premium edition doesn’t support the Connection (Host) manager I was out of luck with running it from laptop to control the desktop. Sure, I could use it on the supported Windows 7 Ultimate desktop to control the laptops (because the Home editions contain the “client” end and can support inbound requests for RDC control). But that didn’t help me.

(edit on 01-10-10. OK I must have been drinking too much green tea when I wrote the above. I could in fact use RDC on my “out-of-the-box” Win7 Home Premium systems to control the Windows 7 Ultimate desktop. The “client” side is included in all versions of Win7 as seen in the chart below. What I was unable to do (and still couldn’t do until applying the “patch” to the Win7 Home Premium systems) was RDC into any of my three Windows 7 Home Premium systems. Period. I didn’t catch that error as I was only RDC’ing from my Win7 HP system into my Win7 Ultimate to begin with, which did support the RDC Host natively. It wasn’t the trick I did in this post that made that possible….it was the fact I was connecting into a Win7 Ultimate OS version. Doh! My bad. I think we are all cleared up now.)

See the chart below I found.

creator unknown original image here. Comment please and I will give credit

What to do?

Maybe it was time to take a second look at those posts and see if I could get a Windows 7 RDC Host session ported over onto the Home Premium edition?

Worth a try.

Preparations

As Julie found before, there seemed to be four key files that needed to be copied over from a build of Windows 7 that supports the full Windows Remote Desktop.

mstsc.exe

mstscax.dll

mstsc.exe.mui, and

mstscax.dll.mui

Hopefully nothing had changed.

Before I got started, however, I fired up both Process Explorer and Process Monitor, set the second to start a capture session, and then launched the Windows 7 Remote Desktop Connection application on my Win 7 Ultimate RC1 build. I figured this info might help me tease out if any new file dependencies were added since XP/Vista. Once I had established a remote connection to one of my laptops, I saved a Process Explorer open-file report for the mstsc.exe process. Then I disconnected and saved the Process Monitor data set.

Next I copied the mstsc.exe and mstscax.dll files where they had been quickly located in the C:\Windows\System32 folder. However, like Julie before, I had greater difficulty finding the “MUI” files on Windows 7.

So I pulled out SearchMyFiles and ran a query on the entire system for them. I found them located in a number of places on the Windows 7 Ultimate RC1 (…x32 bit by the way…) build I am using:

note that the folder paths actually have no spaces in them, despite the way the table wrapping makes them look.

I copied one of each kind of file needed from the locations and dumped them into a fresh folder on my USB stick.

I then took that USB stick over and plugged it into my Windows 7 Home Premium laptop (...x64 bit version by the way…) and then launched the mstsc.exe file.

Houston, you’ve got a problem

…and was promptly greeted by the following.

Bummer! Maybe it couldn’t be pulled off under Win7 anymore. Or maybe the x32 to x64 platform transfer was fuzzing the ability of it to work.

Nah.

A quick look at the error suggested that the mstsc.exe file was looking for the mstsc.exe.MUI file to be located in a specific location. It wanted the file to be located in a sub-folder under whatever the correct <LANG_NAME> folder it should be.

So I just made a folder in the same one that contained my mstsc.exe file. But what to name it? What language format should I use?

I ended up referring to the Process Explorer log I captured earlier, but if you want a trick, just look at the folder-path for the file listed in the table above.

mstsc.exe.mui C:\Windows\System32\en-US

Yep. I named my subfolder “en-US” and moved the single mstsc.exe.mui file I had copied into it instead.

Relaunched mstsc.exe and….

Houston, we have lift-off!

I connected just fine and have successfully made connections from my Windows 7 Home Premium x64 laptop, wirelessly, to all my systems including extended ones to the Windows 7 Ultimate RC1 x32 desktop system. I’ve also been able to use this folder set of the Windows 7 Remote Desktop Connection file version set on my XP Professional SP3 system to control other XP Pro systems in a pinch. I don’t see why it shouldn’t work for Windows Servers or other RDC supported systems/builds as well.

Hurrah!

But Wait, Claus, One Problem!

…I don’t have access to a copy of Windows 7 Ultimate or any of the other versions that contain the “full” RDC file-set. But I do have Windows 7 Home Premium. Am I out in the cold?

Nah. But you’ve got some work to do to get it. Here are some options as I see them.

Find a friend/co-worker/significant other who does have Windows 7 Ultimate/Professional/Enterprise and treat them to a free dinner or pizzas and beg them to let you snag the files off their system. (Just don’t make any compromises in your character that old Claus wouldn’t do either.) or

Pop over and download the Microsoft Windows 7 Enterprise 90-Day Eval VHD. Yes, I know, it has all kinds of overwhelmingly threatening talk such as “…Windows Server 2008 Hyper-V is required to use this virtual machine. In addition to the system requirements for Windows Server 2008 as described in the release notes, a 64-bit system with hardware-assisted virtualization enabled and data execution prevention (DEP) is required. It is also recommended to ensure that you have a clean install of x64 edition of Windows Server 2008 to be able to use the Hyper-V technology.” Whatever. We just want the VHD file itself.

Download the three parts, the primary exe file and the two other rar files.

When they are all downloaded, run the exe file and it will unpack the collection in a location specified. Make note.

Copy one file of each of the above into a folder, make your en-US folder in that folder and move the mstsc.exe.mui file into it.

Unmount (actually “detach”) your VHD file and be on your merry way.

Delete the entire 90-day trial folder/contents if you are tight on space, otherwise you might want to keep the VHD handy in case you need to go on any future raiding parties.

Done.

Using Windows 7 RDC

Again, if you’ve stuck with me this far, I’m assuming you know what to do with RDC now; both how to enable and configure access at the “client” end you want to remote attach to, as well as the “host” RDC application as well.

In most cases, you don’t want the ability to remotely turn-off/power-down the remote system as you then wouldn’t be able to re-connect to it. That’s why Microsoft removes the shut-down option from the remote system’s start-menu when you are connected to it.

I know this is getting to be a long post but that first post above by NeoWin sports info on some neat changes in the Windows 7 release of RDC. It’s laden with screenshots but these features might be enough to try adopting it on your XP Pro systems at work as well (if allowed), rather than the XP Pro version:

Below are the features introduced in Windows 7 Remote Desktop Client

Windows 7 Aero support

Direct 2D & Direct 3D 10.1 application support

True multi-monitor support

RDP Core Performance Improvements

Multimedia enhancements

Media Foundation support

DirectShow support

Low Latency audio playback support

Bi-directional audio support

So how do you initiate a remote shutdown, if, say, you are in bed with your laptop and don’t want to pad across the cold floor to the room where your “server” is? Easy enough.

Process Explorer and Process Explorer: Command line options for P.E. – Sysinternals. This is my method as I always install Process Explorer on all my systems, set it to be the default Task Manager replacement, and the configure it to launch as a scheduled task after startup with the /t argument parameter. This not only launches it, but minimized to the system tray. Then I just have to access it in my RDC connection and choose the “shutdown” option. Done.

Alternative Remote Control Tools

Maybe Windows Remote Desktop Connection (Host) isn’t your thing.

Lucky for you there are a lot more freeware apps to pick from. However in my mind, this particular scenario that I found need for just seemed to make RDC a perfect fit whereas many of these listed below just didn’t quite offer the ease or flexibility I needed in an Microsoft/Windows network integrated manner.

Anyway, here’s a list of lists. Your mileage may vary. Listed in a particular order (to me).

ShowMyPC – Still simply the easiest way to remote connect to a remote desktop to perform ad-hock connections and desktop control support. Particularly for non-techie (re: family/friends) end-points.

TeamViewer Portable – Lots of reasons I’m thinking of moving to this application from ShowMyPC. That will have to wait for a later post. Offered by PortableApps.com so its perfectly portable software for your USB drive.

14 comments:

Anonymous
said...

Door #4:Go to http://thegreenbutton.com/forums/t/79427.aspx and download the patch.I can now access my Windows 7 Home Premium 64-bit machine via remote desktop, even if another user is already logged on locally.

@ cu-shane - Windows Home Premium 7 includes the "client" side of Windows Remote Connection as part of the OS (as do just about all Windows XP/Vista/Win7 versions). The chart I captured pretty much shows that. For example I can use my Win7 Ultimate RC desktop system to remote-control our Win7 Home Premium systems just fine with no issues at all. Or use this on one Win7 Home Premium system to control another.

So with this you could remote-control another Win7 Home Premium, Win7 Ultimate, whatever, from a Win7 Home Premium, Ultimate, whatever.

If you read the additional links you can find how to turn that feature on in Win 7 Home Premium. As a security measure it is turned "off" on all systems by default.

The other issue is that you have be on the same network, or that the IP/name address of the remote system you want to control must be "reachable". Modems/routers, firewalls (hardware/software-based), and a slew of other things might prevent you from remote controlling your, say, brother-in-law's system in his house from your own simply by typing in the IP address he gives you.

In a super-simple situation it might work (or in the hands of home user familiar with Windows networking matters) but for must home-users this might not be a good option. That's why I provide links to other "remote-control" solutions as well which help work around these networking issues.

This is more a "it-can-be-done" trick for sysadmins at home or who (like Julie) need to run it on-the-fly when sitting in front of a Windows Server box that doesn't have RDC installed. Kinda for emergency response purposes...not really for daily usages (unless, I guess you are like me and are a sysadmin on a home budget and couldn't afford to upgrade all your Windows systems to Windows Ultimate...but need the feature.)

I'd respectfully argue it isn't really a "door #4" but more like a deck addition to the house. Everyone still needs to come through one of the first 3 doors, but then door #4 leads out where more folks can hang out once they get there.

As I understand it from reading the forum thread you linked to, it's discussing a modification that will allow "concurrent remote desktop" connections.

By design, only one RDC/local "user" can be logged into the system "actively" (not talking about user fast-switching) at a time. That means that if Lavie is sitting at her laptop, working, and needs me to remote control it, then when I do my RDC, it locks her out while I do the connection/work. Nor can Alvis also do a RDC Host connection at the same time I am.

That is one serious "drawback" to using RDC to remote control troubleshoot a system as the user can't give active feedback on the issue while you work on it. Other remote control tools such as ShowMyPC, LogMeIn, or Teamviewer do allow both the remote connector and the local user to interact at the same login time...a concurrent remote desktop session.

Certainly one can see the value of this ability and wonder why MS didn't design (well, it was there for a time, but then got withdrawn as a feature) that into RDC as an option in Vista/Win7 RDC/RDP.

The workarounds like the one you linked to for Win7 generally makes it possible. (For more on other Windows OS's see concurrent remote desktop in a Google search.)

What I documented here is how to get the RDC "Host" running, using 100% pure Microsoft Windows system files, "portable" to carry on, say, a USB stick in case in a pinch you are sitting at a Windows version that doesn't have the RDC "Host" feature, but you still need to do the work.

It doesn't "patch" the non-RDC supported OS in any way. It doesn't require modification of the registry in any way. It doesn't use modified or older versions of key service file dll's to do so. Overall it is a pretty benign "trick" and I would really not even glorify it with "hack" status.

It is clean, simple, and portable.

Please don't get me wrong, I'm not dissing anyone for doing such things to get "concurrent remote sessions" going on their box. Seems like a reasonable thing to do for the folks who really need that function. Clearly there are.

However I see that as an extension of RDC as I have described it, not an alternative to it.

Even if your Win7 system is modded to support multiple concurrent remote sessions, it doesn't do you any good if your host system is Win7 Home Premium and doesn't have the files needed to run the RDC "host" in the first place. Sure you have the RDC "client" but that won't let you control that other system with RDC, no matter how many concurrent sessions it might support.

However, the link you provided is a really cool (and true) system mod and I really appreciate you sharing it and bringing it to my attention; particularly as it covers Win7 systems.

Hopefully your comment will be useful to folks stopping by for the first and then realizing they might need to go through door #4 as well to really meet their specific need.

I agree that the patch I linked to is overkill if all you want is turn on the "host" part of RDC, but it does that and more by adding support for concurrent remote sessions.

Also, to clarify, "concurrent remote sessions" means that if a user is already logged in and working on a computer, you can connect via remote desktop to that same computer without kicking the other user out. It does not mean however that you can see and interact with the other user's Desktop. It just gives you the ability to have several users logged in to the same computer at the same time.

Thanks a lot for your post, I will make sure to have these files on my USB key.

I might be wrong, but all the client PC's I have (ranging from xp-home/pro & vista-basic/premium/bussiness/ultimate & win7 all versions) do have the mstsc.exe tool present. In xp it was on the install-cd as extra, in vista & up it comes default.On w2k servers it is on the cd as extra, on w2k3 it is default installed. It is also downloadable from Ms download (updated versions).grettings,robin-hood,a senior sys-manager

Thank you very much .I also did this i guess the hard way.I used Microsofts update for vista to make the RD the same as 7,also for xp.Mainly because I had vista on 1 pc,then copied the updated files to a usb stick and put in appropriare folders on the 7 home premium ,following your instructions this way i get the new features on the vista and all 3 of the 7 boxes.TYVOYAGER

Thanks for this fix, but this only helps me with 50% solution as I would like to be able to initiate Remote Access from my Windows Home Server which loggs te OS on the Client and reports with Windows 7 Home Premium that Remote Access is not possible for this OS. I have seen some "dirty" registry fixes including having to add users and schedule restarts of services on the WHS and indeed I did sucessfully try this approach until one day when my WHS froze and would not allow any remote access at all, with a system recovery as the only recovery method.

I guess I am just thick, but I am missing something. I created a thumb drive with the four files in the proper folders, but still cannot remote from one Windows 7 Home Premium machine to another Windows 7 Home Premium machine. How does this process put the "Host" software on the target Windows 7 Home Premium machine. Any help would be appreciated.

These are good instructions on how to carry the Remote Desktop binaries on a USB drive.Although, based on my analysis of Windows 7 Ultimate and Home Premium these binaries are the same. Also, given that nothing by default on Windows 7 Home Premium listens on port 3389 (Remote Desktop) I'm unsure how these instructions allow anyone to control a Windows 7 Home Premium desktop by default. This is what interpreted for the comments.

Based on them I'm making a major update to the post to make it more clear.

You both are correct. Starting (?) with Windows 7, RDC is available on all versions of Windows 7 to allow a remote connection to a "supported" Windows 7 version (and earlier as wel) that has the RDC "host" running.

As pointed out Windows Home Premium (W7) does indeed not have that. I realize now that my blog title is now misleading as it implies you can use this info to remote "into" a WHP system. Not possible (well it is with a workaround...patch) with these particular steps.

These are good for running the Win7 RDC client binaries from, say, a Vista, XP, or Server system where the existing RDC binaries are either an older version, or not present.

Hi Claus,is it possible to apply your "patch" to get the RD-host-function even to a Win7 Starter Edition?I think there should be nothing against it, I just miss the option to afterwards define one user account as "remote desktop user" on Win7 Starter ("Computer Management -> Local Groups and Users" missing on Starter), are these menus still available on Home Premium Editions?

I'm not able to find anything that would allow the RD-Host function to work on Windows Starter Edition. Not to say that it can't, but I've not found any hacks or other tricks so far to do so.

That said, you might rather try checking out TightVNC which can run as the remote service you are looking for. Version 2.0 just got released with brand new code, particularly compatible with Windows 7.

Credits

Why this? It is the simple blog of a Last Exile fan and is intended to express the enjoyment we derive from studio Gonzo's production. Although we closely relate with those characters, we aren't them in real life. We just want to keep the memory of these incredible young kids alive. So go buy Gonzo's Last Exile DVD's!