Как автоматически включить службу удаленного рабочего стола

Нынешний код не включает службу удаленного рабочего стола код:

import subprocess

# включение удаленного рабочего стола
subprocess.call("reg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f", shell=True)

# перезапуск службы удаленного рабочего стола
subprocess.call("net stop TermService", shell=True)
subprocess.call("net start TermService", shell=True)

как можно это исправить? может быть нужно использовать другую библиотеку?


Ответы (1 шт):

Автор решения: AnnaBazueva

Использование winreg: это более безопасный и надежный способ работы с реестром в Windows,
чем использование командной строки.

Попробуйте так:

import subprocess
import winreg

def enable_remote_desktop():
    try:
        # Включение удаленного рабочего стола
        reg_key = winreg.OpenKey(
            winreg.HKEY_LOCAL_MACHINE,
            r"SYSTEM\CurrentControlSet\Control\Terminal Server",
            0, winreg.KEY_SET_VALUE)
        winreg.SetValueEx(reg_key, "fDenyTSConnections", 0, winreg.REG_DWORD, 0)
        winreg.CloseKey(reg_key)

        # Перезапуск службы удаленного рабочего стола
        subprocess.call("net stop TermService", shell=True)
        subprocess.call("net start TermService", shell=True)

        print("Удаленный рабочий стол включен успешно.")
    except Exception as e:
        print(f"Произошла ошибка: {e}")

if __name__ == "__main__":
    enable_remote_desktop()

И помните, что запускать скрипт надо с правами администратора,
иначе изменения в реестре не будут применены.

→ Ссылка