Как сделать запуск файла Python от имени администратора?

Пытаюсь сделать сниффер пакетов. При выполнении получаю ошибку OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

Попытался решить при помощи

import admin
if not admin.isUserAdmin():
        admin.runAsAdmin()

получаю -> AttributeError: module 'admin' has no attribute 'isUserAdmin' Как пофиксить?


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

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

Можно проверить админ ли вы и при необходимости перезапустить скрипт с правами админа.

import ctypes
import os
import sys


def is_admin():
    """Проверяем права"""
    try:
        # Если админ вернет True
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False


if is_admin():
    # Если админ продолжаем скрипт дальше
    input(" As Admin!!!\n Press Enter!")

else:
    # Перезапускаем скрипт с правами админа
    ctypes.windll.shell32.ShellExecuteW(
        None, "runas", sys.executable, __file__, None, 1
    )
    exit()  # выходим из старой версии скрипта

print("your code...")

# что-бы скрипт не закрылся мгновенно
os.system("pause")
→ Ссылка