web-dev-qa-db-ja.com

Windows 7 Home Premiumでリモートデスクトップ接続を受け入れる

Windows 7 Home Premiumは、デフォルトで(つまり、ターミナルサービスサーバーとして)着信リモートデスクトップ接続をサポートしていません。

しかし、レジストリ設定またはMicrosoftホットフィックスを介してリモートデスクトップ(サーバー)を有効にする方法はありますか?

同様の質問 がWindows Vista Home Premiumに存在します。

13
palswim

RDPラッパー は、dllパッチャーよりもはるかに優れたソリューションです。

利点:

  • windows Vista、7、8、10をサポート
  • システムDLLを変更しない
  • 将来のWindowsの更新と衝突しません
  • 無人インストールに使用できます
  • 組み込みfSingleSessionPerUserトグル
  • 再起動は不要
  • 現在ログオンしているユーザーには影響しません

アクティブなRDPセッションを介してインストールすることもできました。少しの間リンクを失い、その後再接続しました。

12
Vadzim

Windows Home Premiumマシンでリモートデスクトップ(ターミナルサービス)を有効にできます。\Windows\System32\termsrv.dllファイルをハッキングされたバージョンで上書きする(またはパッチを適用/ハッキングする)ことで、さまざまな検索エンジンから見つけることができます。

パッチを見つけた正確なサイトは見つかりませんが、 patcher または DLL to update のバージョン。また、SP1では、別のファイルが必要になる場合があります。(申し訳ありませんが、 Link Rot 、ただしこれらのリンクにはダウンロード用の実行可能ファイル/ DLLファイルが含まれています。)

私の更新には、使用した正確なファイルを見つけるのに役立つバッチスクリプトが付属しています。

@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
4
palswim