【问题标题】:Install windows drivers using python使用python安装windows驱动
【发布时间】:2015-09-12 01:00:12
【问题描述】:

我正在尝试使用 python 脚本自动安装驱动程序,以前我使用批处理文件来完成相同的任务,因为我现在正在使用 python 构建 GUI,所以我想将所有内容合并到 python 中。

我使用 pnputil.exe 安装驱动程序:'pnputil -i -a path_to_inf' 但由于某种原因,我无法让它在 python 中工作,我尝试过 subprocess.call,os.system,但没有任何效果,我总是遇到某种错误,使用 os.system 我可以运行注册表命令来读取/写入/添加/删除键,但使用 pnputil 它只会给我错误。

os.system 错误 = 'pnputil' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

subprocess.call error = subprocess.Popen(['pnputil -i -a path_to_inf'], shell=True) = 文件名、目录名或卷标语法不正确。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    你必须使用pnputil.exe的整个地址在python中执行..

    试试这个

    subprocess.Popen(['C:\\Windows\\System32\\PNPUTIL.exe -i -a path_to_inf'], shell=True) 
    

    或者

    subprocess.Popen(['C:\\Windows\\SYSNATIVE\\PNPUTIL.exe -i -a path_to_inf'], shell=True)
    

    两者都应该可以,因为它是基于 32 位和 64 位版本的

    【讨论】:

    • 不,仍然收到相同的错误“C:\Windows\System32\PNPUTIL.exe”不被识别为内部或外部命令、可运行程序或批处理文件。'
    • os.system('C:\\Windows\\SYSNATIVE\\PNPUTIL.exe -i -a path_to_inf') 终于工作了,使用子进程给出了同样的错误,现在使用 os.system 它工作很好。
    【解决方案2】:

    我自己也遇到了这个问题,并且用头撞了很久。将其放在这里以供遇到此问题的其他人使用,因为我无法很好地解释为什么会发生此问题。

    出现此问题的原因是 32 位 Python 应用程序试图访问 64 位 Windows 资源并被自动重定向到不正确的路径。在此处了解有关该关系的更多信息:

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

    因此,如果您的 Python 安装是 64 位,那么您已经处于正确的上下文中,只需调用 pnputil 即可。如果您使用的是 32 位 Python,则必须重定向到 sysnative。以下是我目前用来获取驱动程序商店驱动程序列表的代码:

    import platform
    import subprocess
    
    if '32bit' in platform.architecture():
        process = '%systemroot%\Sysnative\pnputil.exe -e'
    else:
        process = 'pnputil.exe -e'
    
    p = subprocess.Popen(process, shell=True,
            stdout=subprocess.PIPE, universal_newlines=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2014-03-10
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      相关资源
      最近更新 更多