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


13

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

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

同様の問題は、 Windows Vistaのホームプレミアムのために存在します。

回答:


11

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

利点:

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

アクティブなrdpセッションでインストールすることもできました。しばらくリンクを失い、再び再接続しました。


2
Windows 7の場合、管理以外のユーザーとしてリモートでログインできるようにするには、RDPWrapをインストールした後、ユーザーにリモートデスクトップ権限を付与するためにこの回答の指示に従う必要がありました。
これは私の本当の名前ではありません

4

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

パッチを見つけた正確なサイトを見つけることはできませんが、他のサイトには、パッチャーまたは更新するDLLのバージョンがあります。また、SP1では、別のファイルが必要になる場合があります。(申し訳ありませんが、リンクの腐敗を防ぐことはできませんが、これらのリンクにはダウンロード用の実行可能/ 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

2
OPが7ではなくVistaについて質問していることに
気付く
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.