It seems as though Windows Vista Home Premium doesn't have the ability to utilize RDC.
Is there any way around this? Is there any third-party software (preferably free) that I can use to remote desktop into a Windows Vista Home Premium machine?
23 Answers
The free VNC's work very well. I use UltraVNC to access the other machines on the network as well as over the internet. They also have optional video driver accelerators that make the experience more life-like. ToughVNC is also free. The advantage is a direct connection between machines instead of going through someone else's server, like GoToMyPC or TeamViewer (which also work well).
You can rdp INTO a Vista Home. You'll need Business or Ultimate though to rdp into other machines.
I lied. Officially it isn't suppose to work. It works cause I hacked up my VM installation.
My suggestion would be teamviewer. Or Live Mesh.
2Edit: I realized I posted a solution for Windows 7 Home Premium. You can use similar steps to enable Remote Desktop for Windows Vista Home Premium (with similar sites as well).
You can enable Remote Desktop (Terminal Services) on a Windows Home Premium machine. It involves overwriting your \Windows\System32\termsrv.dll file with a hacked version (or patching/hacking it in-place), which you can find from various search engines.
I can't find the exact site where I found my patch, but other sites exist, with either a patcher, or a version of the DLL to update. Also, for SP1, you may need a different file. (Sorry I can't protect against Link Rot, but these links contain executable/DLL files for download.)
My update came with a batch script, which may help with locating the exact files I used:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET WINVER=Windows 7 Build 7601
SET SET_PRODUCTNAME="Windows 7"
SET SET_CURRENTBUILD="7601"
SET SET_CSDBUILDNUMBER="1130"
SET SET_VERSION=%SET_CURRENTBUILD%.%SET_CSDBUILDNUMBER%
TITLE Concurrent Remote Desktop Sessions %WINVER%
:SHOWHELP IF /I *%1 == *-? GOTO PRINTHELP IF /I *%1 == *help GOTO PRINTHELP GOTO PERMISSIONCHK
:PRINTHELP ECHO This script enables concurrent remote desktop sessions ECHO for %WINVER% ECHO. ECHO This script must be run as an Administrator. ECHO To open an elevated command prompt with Administrator privileges ECHO press WinKey, typ cmd, and hit Ctrl+Shift+Enter. ECHO. ECHO. ECHO Available commandline switches: ECHO. ECHO -? Show this help. ECHO help Same as -?. ECHO multi Enable multiple sessions per user. ECHO blank Enable remote logon for user accounts that are not password protected. ECHO. GOTO END
:PERMISSIONCHK REM Note: Mikinho, Updated admin right checks to a more appropiate method SET HasAdminRights=0 FOR /F %%i IN ('WHOAMI /PRIV /NH') DO ( IF "%%i"=="SeTakeOwnershipPrivilege" SET HasAdminRights=1 ) IF NOT %HasAdminRights%==1 ( ECHO. ECHO This script must be run as an Administrator. ECHO. ECHO Use switch -? to show help. ECHO. GOTO END )
:VERSIONCHECK REM Note: Mikinho, Improved checks... FOR /F "tokens=3*" %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| FIND "ProductName"') DO SET PRODUCTNAME=%%A %%B REM IF /I NOT "%PRODUCTNAME%" == %SET_PRODUCTNAME% GOTO UNSUPPORTED FOR /F "tokens=3" %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "EditionID"') DO SET EDITIONID=%%A IF /I NOT "%EDITIONID%" == "Ultimate" IF /I NOT "%EDITIONID%" == "Enterprise" IF /I NOT "%EDITIONID%" == "Professional" IF /I NOT "%EDITIONID%" == "HomePremium" GOTO UNSUPPORTED FOR /F "tokens=3" %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentBuild"') DO SET CURRENTBUILD=%%A IF /I NOT "%CURRENTBUILD%" == %SET_CURRENTBUILD% GOTO UNSUPPORTED FOR /F "tokens=3" %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CSDBuildNumber"') DO SET CSDBUILDNUMBER=%%A IF /I NOT "%CSDBUILDNUMBER%" == %SET_CSDBUILDNUMBER% GOTO UNSUPPORTED GOTO START
:UNSUPPORTED ECHO. ECHO Your operating system is not supported. ECHO Only for %WINVER% GOTO END
:START CLS IF /I EXIST %SystemRoot%\SysWOW64 (SET ARCH=64) ELSE (SET ARCH=32)
:DETECTARGUMENTS SET SINGLESESSION=1 SET BLANK=1 IF /I *%1 == *MULTI SET SINGLESESSION=0 IF /I *%2 == *MULTI SET SINGLESESSION=0 IF /I *%1 == *BLANK SET BLANK=0 IF /I *%2 == *BLANK SET BLANK=0
:SETSOURCEFOLDER REM This will get the folder the batch file was launched from since the current REM directory will change if launched from a network share SET SOURCEFOLDER=%~dp0 ECHO Source Folder is %SOURCEFOLDER%, Windows is %ARCH%-bit ECHO.
:TAKEOWNERSHIP ECHO Taking ownership of %SystemRoot%\System32\termsrv.dll takeown /a /f %SystemRoot%\System32\termsrv.dll ECHO Granting Administrators rights ICACLS %SystemRoot%\System32\termsrv.dll /Grant "%USERNAME%":F ICACLS %SystemRoot%\System32\termsrv.dll /Grant Administrators:F
:STOPTERMINALSERVICES ECHO Stopping Remote Desktop Services REM Update: Mikinho, changed to TermService for globalization NET stop TermService /y
:BACKUPTERMSRVDLL IF /I EXIST %SystemRoot%\System32\termsrv.dll.%SET_VERSION%.bak GOTO PATCHED COPY "%SystemRoot%\System32\termsrv.dll" "%SystemRoot%\System32\*.*.%SET_VERSION%.bak"
:COPYTERMSRVDLL IF /I NOT EXIST "%SOURCEFOLDER%%ARCH%_termsrv.dll" ( ECHO. ECHO The %ARCH% version of termsrv.dll is not present ECHO. ECHO Use switch -? to show help. ECHO. GOTO END ) ECHO Copying "%SOURCEFOLDER%%ARCH%_termsrv.dll" to "%SystemRoot%\System32\termsrv.dll" COPY /Y "%SOURCEFOLDER%%ARCH%_termsrv.dll" "%SystemRoot%\System32\termsrv.dll" GOTO IMPORTREGKEYS
:PATCHED ECHO ###################################### ECHO # Patched Already ,Config Editing... # ECHO ######################################
:IMPORTREGKEYS ECHO Enabling RDP REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
:HOMEPREMIUM IF /I "%EDITIONID%" == "HomePremium" ( NETSH advfirewall firewall delete rule name="Remote Desktop (TCP-In)" NETSH advfirewall firewall add rule name="Remote Desktop (TCP-In)" program=System profile=public,private,domain dir=in localport=3389 protocol=tcp action=allow description="Inbound rule for the Remote Desktop service to allow RDP traffic. [TCP 3389]" COPY /Y "%SOURCEFOLDER%%ARCH%_rdpclip.exe" "%SystemRoot%\system32\rdpclip.exe" )
:SETSINGLESESSIONSETTING ECHO Setting fSingleSessionPerUser to %SINGLESESSION% REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d %SINGLESESSION% /f
:SETBLANKPASSWORDPOLICY ECHO Setting LimitBlankPasswordUser to %BLANK% REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d %BLANK% /f
:CONFIGUREFIREWALL ECHO Configuring Remote Desktop in Windows Firewall NETSH advfirewall firewall set rule group="remote desktop" new enable=Yes
:STARTTERMINALSERVICES ECHO Starting Remote Desktop Services REM Update: Mikinho, changed from "Remote Desktop Services" for globalization NET START TermService
:PAUSE5SECONDS ECHO Pausing 5 seconds to give service time to start listening CHOICE /n /c y /d y /t 5 > nul
:CHECKIFSERVICELISTENING ECHO Checking if Service is listening on port 3389 SUBST NETSTAT -a | find /i "3389" IF ERRORLEVEL 1 GOTO SERVICENOTLISTENING
:SERVICEISLISTENING ECHO Service is listening ECHO Done GOTO END
:SERVICENOTLISTENING ECHO Service is not listening
:CONTINUE ECHO Done
:END
ENDLOCAL
PAUSE
EXIT /B 1