源作者:万里客
qt程序以管理员运行在启动 Qt 软件时希望强制停掉一些其他的进程
目前在 win 平台的实现方式
问题
解决的思路
实现
提升到管理员的 bat 脚本
参考资料
目前在 win 平台的实现方式
QString str = "A.exe";
QString cmd = QString("taskkill /im %1 /f").arg(str);
#ifdef Q_OS_WIN
QStringList arguments;
argumentsCheck for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%SysWOW64cacls.exe" "%SYSTEMROOT%SysWOW64configsystem"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
)
REM -->If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
:: echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) >"%temp%getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >>"%temp%getadmin.vbs"
"%temp%getadmin.vbs"
del "%temp%getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
taskkill /im rufus-3.13p.exe /f
参考资料
Creating/writing into a new file in Qt
如何在C ++中检查文件在Qt中是否存在
open an app as admin using QProcess
BatchGotAdmin
Run Windows PowerShell command with Qt
How to request Administrator access inside a batch file
Convert QTextStream to QByteArray
说明:头条好像不支持直接插入链接,关于参考资料里的链接需要的话可以自行搜索,或者留言