我正在用Python编写一段代码,需要通过软件名称获取Internet流量。我需要使用CMD命令
我已经有了两行代码,可以解决我所需的一半问题:
netstat -nb
,但是这个命令需要提升权限。我需要保持代码简单,只有一行或者更少,不能使用长的批处理或PowerShell脚本。最好只使用Python的subprocess库。我已经有了两行代码,可以解决我所需的一半问题:
subprocess.check_output('powershell Start-Process netstat -ArgumentList "-nb" -Verb "runAs"', stdout=subprocess.PIPE, shell=True)
这个问题的关键是一个新窗口被打开,导致我需要的所有数据都丢失了。也许有一种方法可以不打开另一个窗口或保存新窗口中的输出结果?
subprocess.check_output('powershell Invoke-Command {cmd.exe -ArgumentList "/c netstat -nb"}', stdout=subprocess.PIPE, shell=True)
这个例子中,我在同一窗口中输出结果,但是没有高程信息,因此我没有得到任何结果...也许有一种方法可以在不打开新窗口的情况下获取高程信息吗?
感谢您的帮助,希望我的问题足够清晰。
RUNAS
命令了吗? - litExecuteShellW
函数或其他同类函数,我无法保存来自cmd命令的输出,这就是为什么我需要使用子进程的原因。为了使用runas,我需要插入用户,然后输入密码,但我不会获得这些信息,即使我在我的计算机上使用它也无法正常工作。我需要做的是在我的Python脚本中静默运行(如果可能)netstat -nb
命令,并将输出保存到变量中。如果一开始有什么不清楚的地方,请多多包涵。 - Pedro PeckCMD /C netstat -nb
创建一个快捷方式,并将特权状态分配给该快捷方式。然后,您可以从程序中调用该快捷方式。这是第三种技术的变体,在 [https://www.bleepingcomputer.com/tutorials/windows-elevated-command-prompt/] 中提到。 - Steven K. Mariner