gpt4 book ai didi

qt - 如何在没有提升的情况下执行应用程序?

转载 作者:行者123 更新时间:2023-12-03 22:32:54 25 4
gpt4 key购买 nike

我想调用一个更新程序来检查更新(不是实际进行更新,而是只检查是否有更新)。我想在后台默默地做这件事。如果有更新,我会要求用户提升权限并运行更新程序。检查包括读取应用程序目录中的文件并将其中找到的版本与网站上的版本进行比较。

如何在没有高度的情况下运行它仅用于检查? QProcess::start()失败,因为它需要提升权限和 ShellExecute仅当我出于同样的原因添加“runas”动词时才有效(我只想要在该目录中实际写入内容,即我想执行更新)。我猜我需要添加某种 list ,但我不知道它的内容。

最佳答案

所以事实证明我有另一个错误,导致非提升的运行分支在所有情况下都运行。我在帖子中描述的模型有效。为避免 Windows 推断需要提升权限,您需要添加 list 资源。 (例如,如果您的应用程序 exe 的名称包含“更新程序”一词,它将被触发)

list 的内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

将它编译为您的 .exe 取决于您的编译器和环境,所以我只展示我的:Qt Creator 和 mingw-gcc:

为资源创建一个 rc 文件,内容如下:
1 24 DISCARDABLE manifest.xml

将此 rc 文件添加到您的 .pro 中,如下所示:
win32:RC_FILE = resources.rc

在此之后,没有动词参数的 ShellExecute 将在没有提升的情况下运行,而使用“runas”将在提升的情况下运行它。

关于qt - 如何在没有提升的情况下执行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com