Загрузка данных


```python
import os
import winreg
import subprocess
import csv
from pathlib import Path


# ============================================================
# 1. РЕЕСТР — Run / RunOnce
# ============================================================

def check_registry():
    print("\n" + "=" * 80)
    print("1. РЕЕСТР — АВТОЗАГРУЗКА")
    print("=" * 80)

    registry_paths = [
        ("HKCU", winreg.HKEY_CURRENT_USER,
         r"Software\Microsoft\Windows\CurrentVersion\Run"),

        ("HKCU RunOnce", winreg.HKEY_CURRENT_USER,
         r"Software\Microsoft\Windows\CurrentVersion\RunOnce"),

        ("HKLM", winreg.HKEY_LOCAL_MACHINE,
         r"Software\Microsoft\Windows\CurrentVersion\Run"),

        ("HKLM RunOnce", winreg.HKEY_LOCAL_MACHINE,
         r"Software\Microsoft\Windows\CurrentVersion\RunOnce"),
    ]

    for name, hive, path in registry_paths:
        print(f"\n[{name}]")
        print(f"Путь: {path}")

        try:
            key = winreg.OpenKey(hive, path)

            count = winreg.QueryInfoKey(key)[1]

            if count == 0:
                print("  Пусто")

            for i in range(count):
                value_name, value_data, value_type = winreg.EnumValue(key, i)

                print(f"  {value_name}")
                print(f"    -> {value_data}")

            winreg.CloseKey(key)

        except FileNotFoundError:
            print("  Ключ отсутствует")

        except PermissionError:
            print("  Нет доступа")


# ============================================================
# 2. ПАПКИ STARTUP
# ============================================================

def check_startup_folders():
    print("\n" + "=" * 80)
    print("2. ПАПКИ STARTUP")
    print("=" * 80)

    folders = {
        "Текущий пользователь":
            Path(os.environ["APPDATA"]) /
            r"Microsoft\Windows\Start Menu\Programs\Startup",

        "Все пользователи":
            Path(os.environ["PROGRAMDATA"]) /
            r"Microsoft\Windows\Start Menu\Programs\StartUp"
    }

    for name, folder in folders.items():
        print(f"\n[{name}]")
        print(f"Путь: {folder}")

        if not folder.exists():
            print("  Папка отсутствует")
            continue

        files = list(folder.iterdir())

        if not files:
            print("  Пусто")
            continue

        for file in files:
            print(f"  {file.name}")
            print(f"    -> {file}")


# ============================================================
# 3. ПЛАНИРОВЩИК ЗАДАНИЙ
# ============================================================

def check_scheduled_tasks():
    print("\n" + "=" * 80)
    print("3. ПЛАНИРОВЩИК ЗАДАНИЙ")
    print("=" * 80)

    command = [
        "schtasks",
        "/query",
        "/fo",
        "LIST",
        "/v"
    ]

    try:
        result = subprocess.run(
            command,
            capture_output=True,
            text=True,
            encoding="cp866",
            errors="replace"
        )

        if result.returncode != 0:
            print("Ошибка:")
            print(result.stderr)
            return

        print(result.stdout)

    except Exception as e:
        print(f"Ошибка: {e}")


# ============================================================
# 4. СЛУЖБЫ WINDOWS
# ============================================================

def check_services():
    print("\n" + "=" * 80)
    print("4. СЛУЖБЫ WINDOWS")
    print("=" * 80)

    command = [
        "powershell",
        "-NoProfile",
        "-Command",
        """
        Get-CimInstance Win32_Service |
        Select-Object Name, DisplayName, State, StartMode, PathName |
        Sort-Object StartMode, Name |
        Format-Table -AutoSize
        """
    ]

    try:
        result = subprocess.run(
            command,
            capture_output=True,
            text=True,
            encoding="utf-8",
            errors="replace"
        )

        if result.returncode != 0:
            print(result.stderr)
            return

        print(result.stdout)

    except Exception as e:
        print(f"Ошибка: {e}")


# ============================================================
# 5. СВОДКА
# ============================================================

def main():
    print("=" * 80)
    print("ПРОВЕРКА АВТОЗАГРУЗКИ WINDOWS")
    print("=" * 80)

    print("\nКомпьютер:", os.environ.get("COMPUTERNAME"))
    print("Пользователь:", os.environ.get("USERNAME"))

    check_registry()
    check_startup_folders()
    check_scheduled_tasks()
    check_services()

    print("\n" + "=" * 80)
    print("ПРОВЕРКА ЗАВЕРШЕНА")
    print("=" * 80)


if __name__ == "__main__":
    main()
```