精华内容
下载资源
问答
  • 目标以及问题 我在完成一项任务中,需要杀掉一个弹窗进程,但是Windows下执行taskkill /im Au_.exe /f并没有杀掉进程,而是提示:拒绝访问该进程...还有就是一种在python程序中获取管理员的权限执行。 解决问题代码 def

    目标以及问题

    我在完成一项任务中,需要杀掉一个弹窗进程,但是Windows下执行taskkill /im Au_.exe /f并没有杀掉进程,而是提示:拒绝访问该进程。经过分析是因为权限不够,无法杀掉这个进程。所以我要想办法来获取更高的权限杀掉这个进程。

    查看博客找了很久没有找到自己想要的,解决这个问题有两种方案。 一种是更高权限的命令,需要键入用户名和密码,这种程序跑在不同主机,有不同的用户名和密码,不够自动化,所以不是我想要的。还有就是一种在python程序中获取管理员的权限执行。

    解决问题代码

    def is_admin():
        try:
            return ctypes.windll.shell32.IsUserAnAdmin()
        except:
            return False
    
    if is_admin():
    	print("以管理员权限运行")
    	# 杀掉名字为Au_.exe的进程
    	os.system("taskkill /im Au_.exe /f")
    else:
    	if sys.version_info[0] == 3:
    		print("无管理员权限")
    		ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    

    没错,这个代码就是大部分博客所贴出来的代码,我起初并不知道,这段代码都是什么意思,试着执行了一下,是可以的,但是是怎么执行的,就需要调式来分析一下,那么我就来分享一下其他人没有对这段代码说明的的内容,我根据我的调式过程来简单分析一下这段代码。

    分析代码

    其中runas是获得更高权限的一种命令,但是这段代码是怎么个执行过程呢?
    在上面代码,进程的确被杀掉了,但是它是怎么执行的呢,控制台也没有打印"以管理员权限运行"字样。
    于是我在一定的位置,加入了睡眠函数,我的天!一个黑框框成功捕捉!打印出了我想看的东西。

    所以我写了如下调试代码:

    import ctypes, sys, os, time
    
    
    def is_admin():
        try:
            return ctypes.windll.shell32.IsUserAnAdmin()
        except:
            return False
    
    
    def admin_exe() :
        if is_admin():
            print("admin_exe函数内,以管理员权限运行")
            time.sleep(10)
            os.system("taskkill /im Au_.exe /f")
            time.sleep(100)
        else:
            if sys.version_info[0] == 3:
                print('admin_exe函数内,还没有管理员权限')
                ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    
    
    if __name__ == '__main__':
        print("admin_exe前")
        admin_exe()
        print("admin_exe后")
    
    

    主程序控制台:
    在这里插入图片描述
    运行过程中一个管理员权限的控制台:
    在这里插入图片描述
    程序的核心一定是这句代码:
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    其中有一个参数为__file__,可以猜测,这句代码应该是获取管理员权限然后重新执行该文件。
    而且,我在睡眠那么久的情况下,主程序仍然立刻正常退出,可以分析出,执行这个系统命令并不是主程序完成的,那么可以分析得到,这行代码是以管理员身份重新开了一个进程执行系统命令。
    再观察弹出的这个黑框中打印出的内容,打印的内容,完全就是又执行了一遍我这个程序,只是以管理员身份执行了一遍我这个主程序。
    综上,这行代码以管理员身份开启一个新进程,重复执行该文件内容,并有一个自己的控制台。

    提示:如果你只是执行这一个文件,那么写不写这个 if __name__='__main__':都可以,但是要是在其他文件调用该方法,还是要写的,不然会在import该方法的时候,就执行代码了,就出现问题了

    展开全文
  • Python实现管理员权限运行CMD指令

    千次阅读 2020-09-15 17:23:51
    /usr/bin/env python # coding:utf8 import subprocess cmd="net user test3 123456 /add" import ctypes, sys def is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except: return False if is...

    可使用 

    #!/usr/bin/env python
    # coding:utf8
    import subprocess
    cmd="net user test3 123456 /add"
    import ctypes, sys
    def is_admin():
        try:
            return ctypes.windll.shell32.IsUserAnAdmin()
        except:
            return False
    if is_admin():
        recode = subprocess.Popen(
            cmd,
            shell=True)
    else:
        if sys.version_info[0] == 3:
            ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
        else:#in python2.x
            ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

     

    展开全文
  • 1.把python程序在cmd以管理员方式运行管理员方式打开命令提示符,然后切换到代码所在的目录下(自行百度),然后直行python 程序名字,此时程序里面对应的p=os.popen(cmd)都是以管理员权限下执行的。 我碰到了...

    1.dos命令行-禁用和启用本地连接
    https://blog.csdn.net/Q672405097/article/details/85321162?utm_source=app
    启用和禁用本地连接的dos指令
    禁用:

    netsh interface set interface name=“以太网” admin=DISABLED
    

    启用:

    netsh interface set interface name=“以太网” admin=ENABLED
    

    找到了dos指令,下一步就是如何使用python调用dos指令实现网络的切换,因为必须是在管理员方式下才可以,怎么执行呢?
    2.windows下python脚本以管理员方式执行cmd指令
    python运行cmd命令主要有两种形式
    (1)os模块
    OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。

    os.system # 是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system("ipconfig").
      OS.popen   # 带返回值的,如何获取返回值。如
      p=os.popen(cmd)
      print p.read(). # 得到的是个字符串。
    

    这两个都是用当前进程来调用,也就是说它们都是阻塞式的
    (2)subprocess模块
    运行原理会在当前进程下面产生子进程。

    sub=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
      sub.wait()
      print sub.read()
    

    但是这两个只是在非管理员模式下(并不清楚说的对不对)进行执行的,所以命令不能有效。如何才能在管理员权限下执行呢?
    使用runas的/savecred参数
    首先执行一次命令然后保存密码
    runas /savecred /user:Administrator cmd

    输入密码回车,密码就保存到了本机,下次可以直接使用runas而不用输入密码,再使用Python脚本进行调用即可。
    但是这里遇到了一个麻烦,输入密码之后出错登录失败,用户账号限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。
    解决方法:(参考文章
    1、按WIN+R,调出运行框。WIN就是键盘上有个windows图标的那个键。在运行框输入 gpedit.msc ,并回车;

    在这里插入图片描述
    2、在弹出的窗口,展开左侧目录树至安全选项,如图。(计算机配置-Windows设置-安全设置-本地策略-安全选项);

    在这里插入图片描述
    4、在右侧策略处找到“账户:使用空白密码的本地账户只允许进行控制台登录”,此策略默认是已启用;

    在这里插入图片描述
    5、双击打开“账户:使用空白密码的本地账户只允许进行控制台登录”,将其改为“已禁用”,并确定,生效。再访问共享就正常了。

    在这里插入图片描述
    3.最终解决的方法我暂时使用的是两种
    1.把python程序在cmd以管理员方式运行

    以管理员方式打开命令提示符,然后切换到代码所在的目录下(自行百度),然后直行python 程序名字,此时程序里面对应的p=os.popen(cmd)都是以管理员权限下执行的。
    我碰到了使用Anaconda import SSL DLL load failde:找不到指定模块这个问题

      File "C:\Users\Tf011\Anaconda3\Lib\ssl.py", line 98, in <module>
        import _ssl             # if we can't import it, let the error propagate
    ImportError: DLL load failed: 找不到指定的模块。
    

    解决方法:
    在环境变量中加入Anaconda的三个路径(依照自己当初设置的路径):

    D:…\lenovo\Anaconda3;
    D:…\Anaconda3\Scripts;
    D:…\Anaconda3\Library\bin;
    

    2.runas /savecred /user:Administrator + “要执行的指令”
    通过不断的尝试,才发现这样这个指令是可以运行的,具体的实现如下:

    import os
    lis = '"netsh interface set interface name="以太网" admin=enabled"'
    t = "runas /savecred /user:Administrator"+' ' + lis
    os.popen(t)
    

    这里把它拆开的原因是,多个引号在一块容易出错(我是这样觉得),另外对于lis一定要注意字符串里面含有引号,所以外面有一个单引号,两者连接时注意要空格。

    展开全文
  • 如何在PyCharm中以管理员权限运行Python文件 # coding=utf-8 import os def print_hi(): os.system('chcp 65001') target = "www.baidu.com" with os.popen('ping -c 1 %s' % target, "r")

    python调用windows cmd命令输出乱码

    解决方法:
    在调用cmd命令前先更改一下cmd的编码方式
    os.system(‘chcp 65001’)

    如何在PyCharm中以管理员权限运行Python文件

    # coding=utf-8
    import os
    
    
    def print_hi():
        os.system('chcp 65001')
        target = "www.baidu.com"
    
        with os.popen('ping -c 1 %s' % target, "r") as p:
            r = p.read()
            print r
    
    
    if __name__ == '__main__':
        print_hi()
    

    pycharm运行上面代码,结果报错 Access denied. Option -c requires administrative privileges.

    F:\code_work\register\venv\Scripts\python.exe F:/code_work/register/test.py
    Active code page: 65001
    Access denied. Option -c requires administrative privileges.
    

    解决方法:
    以管理员身份启动pycharm,然后将以管理员身份运行所有脚本。

    展开全文
  • 创建shell.vbs和cmd.bat文件 shell.vbs的内容如下 cwd = CreateObject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path path = cwd & "\cmd.bat" Set shell = ...
  • 在windows cmd运行python,需要设置环境变量,不设环境变量是不能在cmd运行python的, 现在假设python安装在C:\Python25目录下,设置环境变量方法如下: 方法一、我的电脑-&gt;属性-&gt;高级-&gt;...
  • python 实现运行shell命令 class CMD(object): """ 运行windows shell 命令 """ __instance__ = None def __new__(cls, *args, **kwargs): """ 实现单例模式 """ if cls.__instance__ is None: cls.__...
  • 我相信一定有很多的人跟...python是解释型脚本语言,在执行时,逐句解释执行,不需要进行预编译。但需要有自身的Python解释器。 所以在执行Python代码时,需要指定python解释器。 指定解释器方法: 在文件开头添加
  • 手动修改注册表 Win+R – regedit 找到以下位置 HKEY_CURRENT_USER\Software...,新建一个字符串值,命名为”c:\windows\system32\cmd.exe”,一般我们的系统都安装在C盘吧??? 然后右键–修改 – 数值数据写入“R...
  • 获取管理员权限执行cmd命令
  • 在pycharm中写python代码使用到cmd命令的时候,习惯使用os 代码如下: import os command = 'XXXXX' os.systme(command) 在调试的时候不弹出cmd弹窗,但是将写好的py打包成exe文件之后运行就会闪出cmd弹窗 解决办法...
  • cmd运行python脚本

    2020-06-11 19:09:51
    cmd 窗口输入 $ python test.py,得到运行错误的提示: Python 的实际工作场景往往是 Unix 或者 Linux。而代码开头的 $ 表示 UNIX 或 Mac OS 操作系统命令提示符。的意思就是“提示用户输入命令行”,的意思就是...
  • python获取管理员权限

    千次阅读 2020-07-09 19:18:31
    这个方法很简单,也无需多说,右键以管理员运行就可以了,然后在里面运行 python 脚本就有管理员权限了。 2. 用 cmd 脚本获取 假设我要运行的文件是 test.py,则我可以写一个 cmd 脚本,不妨叫做 go.cmd,在里面写入...
  • Python 获取Windows管理员权限

    万次阅读 2018-10-18 16:05:15
    最近在写一个可以自动更换 hosts ...这个方法很简单,也无需多说,右键以管理员运行就可以了,然后在里面运行 python 脚本就有管理员权限了。 2. 用 cmd 脚本获取 假设我要运行的文件是 test.py,则我可以写一个 cm...
  • cmd管理员模式 python安装import包

    千次阅读 2018-02-08 19:39:11
    win10下,在左下角win符号下右键单击,在弹出来的列框中选择以管理员身份运行命令行,可以可以看出上面的是一种方式,不是用户名称了,pengc而是换成了system,这样就可以运行一些高级命令安装包pip install serial....
  • 这代表默认情况下不是以管理员身份运行的,而是用户身份。 博主是个很懒的人,从来都会想办法最简单有效的方法处理,不想每次通过win键加r输入cmd,那么最有效的方法是什么呢?这就来告诉你。 二,处理办法...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 将以下代码复制到一个文本文件,然后保存成cmdCreate.reg,注意文件后缀是reg,注册表文件 Windows Registry Editor Version 5.00 ; Created by: Shawn Brink ; http://www.sevenforums.com ...[-HKEY_C
  • 管理员身份运行cmd.reg

    2021-07-26 20:59:48
    管理员身份运行cmd.reg
  • 今天用pyautogui写一个...于是管理员权限运行pycharm,但是IDE太占地方,于是cmd运行,但是管理员运行cmd会提示python不是win32程序,无法运行 解决方法就是将python解释器所在的exe文件属性设置为管理员模式运行 ...
  • python如果获取windows管理员权限(一)

    万次阅读 多人点赞 2018-01-08 20:06:35
    一种解决办法是在管理员cmd运行我们的脚本(右键 run as administrator),但是这种办法不够优雅。我们经常看到当我们运行一些需要高权限的软件时,会弹出以下对话框 这被称为用户安全控制,简
  • 解决cmdPython不能print的问题

    千次阅读 2020-04-04 13:05:03
    想要运行一个Hello world,但是发现根本没有输出啊! 现在网上普遍的方法如下 三个序号分别代表三种方法但是都没啥用。不过你可以试一下,没准你的问题可以通过这个解决。 我突然想到可能我装了anaconda的原因?...
  • 最近在研究使用jenkins持续集成去执行python测试,但是在部署jenkins项目之后,‘构建触发器’执行定时构建任务中的批处理命令(就是与cmd运行的命令是一样的),jenkins执行后,控制台马上就报错了,如下图: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,801
精华内容 7,120
关键字:

python以管理员执行cmd

python 订阅