[每日一氵] Python以管理员权限运行程序

这俩天累的要死,平时被各科吊打,大周末也不能休息, 先做这个简单的试试,做网络基础的作业,要改网卡为混杂模式

import socket
import os

# 监听的主机
host = "localhost"

# 创建原始套接字,然后绑定在公开接口上
if os.name == "nt":
    socket_protocol = socket.IPPROTO_IP
else:
    socket_protocol = socket.IPPROTO_ICMP

sniffer = socket.socket(socket.AF_INET,
                        socket.SOCK_RAW, 
                        socket_protocol)
sniffer.bind((host, 0))

sniffer.setsockopt(socket.IPPROTO_IP,
                   socket.IP_HDRINCL,
                   1)

# 在 windows 平台上,我们需要设置 IOCTL 以启用混杂模式
if os.name == "nt":
    sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

# 读取单个数据包
recv = sniffer.recvfrom(65535)
print(1234)
print(len(recv), recv)

if os.name == "nt":
    sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

在套件字创建那一行,报了这个错:

OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。

查了一下,需要以管理员程序运行

参考了这个大哥的:

import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    # Code of your program here
else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

只是运行的时候,跳出了一个小黑框,看不到输出,很烦

  • 用以管理员权限打开的 powershell , 他这个没法激活我的那个 conda 环境,我又懒得把 Python 路径的环境变量改成那个环境的

  • 于是,想找个管理员权限的cmd,这样试了一下,诶,竟然可以:
    在这里插入图片描述
    在这里插入图片描述

诶,这次可以运行了

那我在这里打开spyder,是不是也有管理员权限了???

在这里插入图片描述
诶,是的确实有管理员权限了,NICE

备注:
我的spyder是这样安装的:

pip install spyder

然后在那个环境输入:

spyder

就可以运行了

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值