ยอมรับการเชื่อมต่อเดสก์ท็อประยะไกลใน Windows 7 Home Premium


13

Windows 7 Home Premium ไม่รองรับการเชื่อมต่อเดสก์ท็อประยะไกลที่เข้ามาตามค่าเริ่มต้น (เช่นเซิร์ฟเวอร์บริการเทอร์มินัล)

แต่มีวิธีใดบ้างที่จะเปิดใช้งาน Remote Desktop (เซิร์ฟเวอร์) ผ่านการตั้งค่ารีจิสทรีหรือ Microsoft hotfix

มีคำถามที่คล้ายกันสำหรับ Windows Vista Home Premium

คำตอบ:


12

RDP Wrapperเป็นโซลูชั่นที่ยอดเยี่ยมกว่า dll patchers

ข้อดี:

  • รองรับ Windows Vista, 7, 8, 10
  • ไม่ได้แก้ไขที่กำลังระบบ
  • จะไม่ขัดแย้งกับการปรับปรุง windows ในอนาคต
  • สามารถใช้สำหรับการติดตั้งแบบอัตโนมัติ
  • มี builtin fSingleSessionPerUserสลับ
  • ไม่ต้องบูตเครื่องใหม่
  • ไม่ส่งผลกระทบต่อผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน

ฉันยังสามารถติดตั้งผ่านเซสชัน rdp ที่ใช้งานอยู่ มันสูญเสียลิงก์ไปสักครู่แล้วเชื่อมต่อใหม่อีกครั้ง


2
สำหรับ Windows 7 เพื่อให้สามารถเข้าสู่ระบบจากระยะไกลในฐานะผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบหลังจากที่ฉันติดตั้ง RDPWrap ฉันต้องทำตามคำแนะนำจากคำตอบนี้เพื่อให้สิทธิ์ผู้ใช้เดสก์ท็อประยะไกลแก่ผู้ใช้
นี่ไม่ใช่ชื่อจริงของฉัน

4

คุณสามารถเปิดใช้ Remote Desktop (Terminal Services) ในเครื่อง Windows Home Premium มันเกี่ยวข้องกับการเขียนทับไฟล์ \ Windows \ System32 \ termsrv.dll ของคุณด้วยเวอร์ชันที่ถูกแฮ็ก (หรือการแพตช์ / แฮ็คไฟล์แบบแทนที่) ซึ่งคุณสามารถค้นหาได้จากเครื่องมือค้นหาต่างๆ

ฉันไม่สามารถหาเว็บไซต์ที่แน่นอนที่ผมพบว่าแพทช์ของฉัน แต่เว็บไซต์อื่น ๆ ที่มีอยู่กับทั้งPatcherหรือรุ่นของ DLL เพื่อการปรับปรุง นอกจากนี้สำหรับ 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

2
ผมตอบคำถามนี้สำหรับ Windows Vista Home Premiumก่อนที่จะทราบว่า OP ถูกถามเกี่ยวกับ Vista แทน 7.
palswim
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.