以管理员身份从 qt 运行 pnputil(或其他 Windows 内置)
Posted
技术标签:
【中文标题】以管理员身份从 qt 运行 pnputil(或其他 Windows 内置)【英文标题】:running pnputil (or other windows built-in) from qt, as administrator 【发布时间】:2014-07-17 22:32:20 【问题描述】:如何在 Qt C++ 应用程序中运行 pnputil?以下失败,lstderr 显示“pnputil 未被识别为内部或外部命令”。大概是因为 pnputil 是内置的(替换非内置的确实有效)。 QProcess 类参考说“cmd /c”格式是 Windows 内置的“可能的解决方案”,但对我来说不是。
QProcess process;
process.start("cmd /c \"pnputil -e\"" );
if (!process.waitForStarted())
return false;
if (!process.waitForFinished())
return false;
QByteArray lstderr = process.readAllStandardError();
QByteArray lstdout = process.readAllStandardOutput();
【问题讨论】:
需要cmd ...
?仅使用QProcess
。其他问题:pnputil
在系统的变量中吗?
【参考方案1】:
您的进程可能使用了错误的路径来查找可执行文件。尝试通过完整路径调用 PnPUtil:
%WINDIR%\System32\PnPUtil.exe
你可以用来逗留Qt Land:
qgetenv("WINDIR");
如果您的应用程序仅适用于 Windows,并且您不介意使用本机调用:
GetWindowsDirectory();
【讨论】:
没有帮助——在 Windows7 中 PnPutil 是内置的,不存在(或任何地方)......这是问题所在。我可以调用任何可执行文件,问题出在内置函数上。 我运行win7并且确实有pnputil.exe 你试过打电话给where pnputil
吗?这个命令的返回值是什么?我已经阅读了它在某些系统上的缺失,有一种解决方法捆绑了一些微软(认为它是 DPInst)或使用本机 Windows api。
如果这是“shell builtin”,另一种方法是生成一个运行 pnputil.exe 的 shell(可以在 QProcess 中使用输入/输出完成)以上是关于以管理员身份从 qt 运行 pnputil(或其他 Windows 内置)的主要内容,如果未能解决你的问题,请参考以下文章