如何在Qt

时间:2017-04-24 03:56:11

标签: windows qt

如何以管理员身份启动我的Qt应用程序或在需要管理员权限时获得提示?我已经尝试了我能找到的关于它的帖子中的所有内容,其中大部分已经有几年了。没有什么工作,每个人似乎都有不同的旋转。我已下载Windows SDK以获取mt.exe,创建清单文件,RC文件以及包括右键单击在内的所有其他方法,并将应用程序设置为以管理员模式启动。没有任何效果。我需要它,因为我的程序中的任务需要管理员权限。 QFile :: errorString()表示拒绝访问。有谁知道如何使这项工作?

4 个答案:

答案 0 :(得分:2)

好的,所以我找到了问题的答案。我之前找到了一些解决方案,但它们没有用。我找到了他们不工作的原因。原因是非常愚蠢的:这是因为我的文件所在的文件夹在第一个和第二个单词之间有一个空格,就像(我的应用程序)一样,这导致了一个无法找到位置的错误。它应该是(myapp)with空间不足。未找到位置的错误仅在尝试添加adim权限时发生。否则一切正常,没有错误。所以这是解决方案,并确保文件夹名称中没有空格。

1)创建rc文件:打开记事本,然后在里面粘贴以下文本    将文件另存为yourappname.rc这将创建rc    文件。将文件放在包含所有源代码和专业版的文件夹中    文件。

#include <windows.h>
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "yourappname.exe.manifest"

2)使用记事本创建清单文件,粘贴以下文本并保存    如yourappname.exe.manifest并将其放在与上面相同的位置。

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="2.0.0.0" processorArchitecture="X86"
  name="yourappname.yourappname" type="win32" />
  <description>A discription of your app</description>
  <dependency />
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
   </trustInfo>
</assembly>

3)在你的专业档案中输入以下文字:

win32 {
    RC_FILE = yourappname.rc
}

就是这样。现在您的应用程序应以管理员权限开始。

也有类似的帖子描述了这个过程。只要确保有  文件夹名称中没有空格或不起作用。你也必须运行qt  管理员权限使其工作。右键单击Qt并运行为  管理员在尝试编译之前。

答案 1 :(得分:0)

要显示require admin提示符,我只需添加

QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"

到我的qmake文件。我一直在我的项目中使用它。

答案 2 :(得分:0)

为我工作(在.pro,win32部分中添加):

CONFIG += embed_manifest_exe
QMAKE_LFLAGS_WINDOWS += /MANIFESTUAC:"level='requireAdministrator'"

答案 3 :(得分:0)

最简单的方法是在项目运行配置中进行配置,添加以下环境变量:

__ COMPAT_LAYER = RUNASINVOKER

然后清理并重建并再次运行该项目,它将起作用。