RDP සැසියකට සේවාදායක ලිපිනයක් අවශ්‍ය වන අතර, පැහැදිලි මූලාශ්‍ර එකඟ නොවේ. CLIENTNAME පරිගණක නාමයක් ලබා දෙයි, ලේඛනාගාරය වෙනත් සැසිවල අගයන් රඳවා ගනී, සහ සොකට් අනෙක් කෙළවර සේවාදායකයා නොව ගේට්වේ හෝ NAT ලිපිනයක් විය හැකිය. Windows සැසියකට වාර්තා කළ සේවාදායක ලිපිනයක් ඇත්තෙන්ම ලබා දෙයි, නමුත් ඔබ නිවැරදි සැසිය අසා පිළිතුර නිවැරදිව විකේතනය කළ යුතුය.

සෙවීම එක් සැසියකට සම්බන්ධ කරන්න

පුද්ගලයාගෙන් නොව, සැසියෙන් පටන් ගන්න. Windows RDP සත්කාරකයක් එක් ගිණුමක් සඳහා සැසි කිහිපයක් දැරිය හැකි අතර, නැවත සම්බන්ධ වීමට පෙර දුටු ලිපිනයක් තවදුරටත් ක්‍රියාකාරී සබැඳියට නොගැළපිය හැකිය. සැසි ID, පරිශීලකයා සහ නිරීක්ෂණ වේලාව එකට සටහන් කරන්න. සැසි ID යනු API අපේක්ෂා කරන යතුර වන අතර, සැසි දෙකක් වරදවා තේරුම් ගැනීම වළක්වන අගයද එයයි.

සත්කාරකයේ, ස්ථාපිත සැසි මෙවලම් ඇති දේ ලැයිස්තුගත කරයි; පරිපාලන දර්ශනය ඔබට ඒ සඳහා අයිතිය ඇති විට පමණක් භාවිත කරන්න. තෝරාගත් ID විමසුමට පෙර වහාම තහවුරු කරන්න, මන්ද නැවත භාවිත කළ ID වෙනත් සැසියක දත්ත ලබා දෙයි.

qwinsta

එම ID සඳහා WTSQuerySessionInformationW අමතන්න

Terminal Services API තොරතුරු පන්තිය 14 සමඟ ප්‍රශ්නයට පිළිතුරු දෙයි, WTSClientAddress. Windows හි කුඩා ctypes ආවරණයක් ප්‍රමාණවත් වන අතර, එය වෙනත් පරිශීලකයෙකුගේ hive කියවීම වළක්වයි. පහත කේතය පැහැදිලි සැසි ID එකක් ගෙන දේශීය සත්කාරකයෙන් අසයි.

import ctypes
import ipaddress
import socket
from ctypes import wintypes

class WTS_CLIENT_ADDRESS(ctypes.Structure):
    _fields_ = [("AddressFamily", wintypes.DWORD),
                ("Address", ctypes.c_ubyte * 20)]

wts = ctypes.WinDLL("Wtsapi32", use_last_error=True)
query = wts.WTSQuerySessionInformationW
query.argtypes = [wintypes.HANDLE, wintypes.DWORD, ctypes.c_int,
                  ctypes.POINTER(ctypes.c_void_p), ctypes.POINTER(wintypes.DWORD)]
query.restype = wintypes.BOOL
free = wts.WTSFreeMemory
free.argtypes = [ctypes.c_void_p]

def client_address(session_id):
    buf = ctypes.c_void_p()
    size = wintypes.DWORD()
    if not query(None, session_id, 14, ctypes.byref(buf), ctypes.byref(size)):
        raise ctypes.WinError(ctypes.get_last_error())
    try:
        if size.value < ctypes.sizeof(WTS_CLIENT_ADDRESS):
            raise RuntimeError("short WTS buffer")
        value = ctypes.cast(buf, ctypes.POINTER(WTS_CLIENT_ADDRESS)).contents
        raw = bytes(value.Address)
        if value.AddressFamily == socket.AF_INET:
            addr = ipaddress.ip_address(raw[2:6])
        elif value.AddressFamily == socket.AF_INET6:
            addr = ipaddress.ip_address(raw[:16])
        else:
            return None
        return None if addr.is_unspecified else str(addr)
    finally:
        free(buf)

ඔබ දැන් තහවුරු කළ පූර්ණ සංඛ්‍යා සැසි ID යවන්න, සහ දේශීය යන්ත්‍රය සඳහා ශුන්‍ය සේවාදායක හසුරුව තබා ගන්න. අසාර්ථක ඇමතුමක් නොමැති ලිපිනයක් ලෙස නොව දෝෂයක් ලෙස සලකන්න, මන්ද දෙකම වෙනස් නිගමනවලට යොමු කරයි. වෙනත් පරිශීලකයෙකුගේ සැසිය විමසීමට සුදුසු Query Information අවසරය අවශ්‍ය වන බැවින්, ක්ෂණිකව වරප්‍රසාද ඉහළ නැංවීම වෙනුවට එම අවසරය ලබා දී ඇති ගිණුම යටතේ මෙවලම ධාවනය කරන්න. ආපසු දුන් බෆරය API ට අයත් වන අතර විකේතනය අසාර්ථක වුවද එය මුදා හැරිය යුතුය.

පවුල විකේතනය කරන්න, පසුව බෆරය මුදා හරින්න

ව්‍යුහය IP තන්තුවක් නොවේ. එහි පවුල ක්ෂේත්‍රය විසි ලිපින බයිට කියවන ආකාරය තීරණය කරයි: IPv4 දෙකේ ඕෆ්සෙට් එකෙන් ආරම්භ වන අතර, IPv6 ශුන්‍ය ඕෆ්සෙට් එකෙන් ආරම්භ වේ. නිර්ණය නොකළ ලිපිනය යනු සේවාදායකයා කිසිවක් වාර්තා නොකළ බවයි, එය හිස් තන්තුවකට සමාන නොවේ. Remote Desktop Gateway සම්බන්ධතා ලිපිනය නොමැති අවස්ථාවක් ලෙස ලේඛනගත කර ඇති බැවින්, ගේට්වේ හරහා යන සැසියක් සේවාදායකයාගේ සැබෑ ලිපිනය ගැන ප්‍රයෝජනවත් කිසිවක් වාර්තා නොකරයි. එවිට සහසම්බන්ධය ගේට්වේයේම වාර්තා වෙත යා යුතුය.

දෝෂ නිරාකරණය කරන විට පවුල ලිපිනය අසල මුද්‍රණය කරන්න, මන්ද දෙක අතර නොගැළපීම විශ්වාසදායක ලෙස පෙනෙන නමුත් වැරදි අගයක සුපුරුදු හේතුවයි. finally කොටසේ WTSFreeMemory සමඟ බෆරය මුදා හරින්න, එවිට ව්‍යතිරේකයක් එය කාන්දු නොකරයි.

වාර්තා කළ ලිපිනය සාක්ෂියෙන් වෙන් කරන්න

වාර්තා කළ සේවාදායක ලිපිනය යනු සේවාදායකයා ලබා දෙන ප්‍රකාශයක් මිස විශ්වාසදායක නිරීක්ෂණයක් නොවේ. එය TCP හි අනෙක් කෙළවර නොවේ, VPN ගේට්වේයේ බදු වගුව නොවේ, සහ සේවාදායකයාගේ පොදු ලිපිනයද නොවේ. සැබෑ ප්‍රශ්නය කුමන VPN බද්දක් පුද්ගලයෙකුට අයත් ද යන්න නම්, එම අවස්ථාවේම VPN සේවාදායකයේ සත්‍යාපිත සැසි වාර්තාව සහසම්බන්ධ කරන්න. ප්‍රශ්නය කුමන මූලාශ්‍රය ශ්‍රෝතාව වෙත ළඟා විය ද යන්න නම්, සම්බන්ධතා වගුව හෝ අවසර ලත් සේවාදායක පැත්තේ ලොග කියවන්න.

ඕනෑම ආධාරක මෙවලමක මෙම අගයන් වෙන් වෙන්ව ලේබල් කර තබා ගන්න. නැති වූ WTS ප්‍රතිඵලය වෙනත් සැසියක අත්තිකාරම් ලේඛනාගාර අගයකට වැටීම වෙනුවට නැති වූ ලෙසම තිබිය යුතුය. ලිපිනය අසල සැසි ID සටහන් කරන්න, මන්ද එම පරිශීලකයාට නැවත සම්බන්ධ වී නව අගයක් ලබා ගත හැකිය. සේවාදායකයාගේ නම හෝ වාර්තා කළ ලිපිනය—කිසිවක් ප්‍රවේශය ලබා දීමට ප්‍රමාණවත් සාක්ෂියක් නොවේ.

අදාළ ලිපි