精华内容
下载资源
问答
  • QT 管理员权限启动子程序
    2021-08-30 16:35:06

    QT以管理员权限启动子程序

    #include <Windows.h>

    int runAsAdmin(QString exe, QString arg)
    {
    #ifdef Q_OS_WIN
        // Initialize the structure.
        SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };

        // Ask for privileges elevation.
        sei.lpVerb = TEXT("runas");

        // Create a Command Prompt from which you will be able to start
        // other elevated applications.
        const QChar* strexe = exe.unicode();
        sei.lpFile = LPCWSTR(strexe);

        // run some commands in the command line.
        const QChar* strargs = arg.unicode();
        sei.lpParameters = LPCWSTR(strargs);

        // Don't forget this parameter; otherwise, the window will be hidden.
        sei.nShow = SW_SHOWNORMAL;

        // 不加这句时hProcess的值是NULL
        sei.fMask = SEE_MASK_NOCLOSEPROCESS;

        if (!ShellExecuteEx(&sei)) {
            DWORD dwStatus = GetLastError();

            if (dwStatus == ERROR_CANCELLED) {
                return -1;
                // The user refused to allow privileges elevation.
            }
            else
                if (dwStatus == ERROR_FILE_NOT_FOUND) {
                    // The file defined by lpFile was not found and
                    // an error message popped up.
                }
        }
        DWORD dw =  WaitForSingleObject(sei.hProcess,5000);
        switch (dw)
        {
        case WAIT_OBJECT_0:
        // hProcess所代表的进程在5秒内结束
        break;

        case WAIT_TIMEOUT:
        // 等待时间超过5秒
        break;

        case WAIT_FAILED:
        // 函数调用失败,比如传递了一个无效的句柄
        break;
        }
    #endif
        return 1;
    }

    更多相关内容
  • Qt管理员权限工具

    2016-07-05 16:13:41
    通过使用这个工具,可以为Qt程序增加盾牌标志,运行的时候申请管理员权限。这个功能常用于对系统关键位置进行文件操作、修改注册表等。
  • Qt管理员权限工具.zip

    2021-12-28 19:17:17
    QT生成的EXE文件,自动申请管理员权限
  • Qt管理员权限工具.rar

    2019-09-30 23:18:20
    运行此软件,选中工程pro文件,选中图标文件,然后重新编译程序,就是以管理员身份运行了
  • QT管理员权限补丁

    热门讨论 2014-06-03 03:28:35
    QT程序默认以管理员权限运行,方便修改注册表。
  • 如果qt写的程序,需要拥有管理员权限,又要实现拖拽功能,这种情况该如何处理? ::RevokeDragDrop(GetHWnd()); BOOL b1 = ChangeWindowMessageFilterEx(GetHWnd(), WM_DROPFILES, MSGFLT_ALLOW, NULL); BOOL...

    Qt的实现

    Qt的拖拽文件进入窗口识别文件名,一般可以用一下Qt的事件实现:

    this->setAcceptDrops(true);  //控件或者窗口
    
    
    
    virtual void dragEnterEvent(QDragEnterEvent* e) override;
    virtual void dropEvent(QDropEvent* e) override;
    virtual void dragMoveEvent(QDragMoveEvent* e) override;
    
    
    //dragMoveEvent可以不用重写
    
    void MainWidget::dragEnterEvent(QDragEnterEvent* e)
     {
         if (true) //鉴别是不是需要接收
         {
             e->acceptProposedAction();
         }
     }
    
      void MainWidget::dropEvent(QDropEvent* e)
      {
          m_pathlist.clear();
      
          QList<QUrl> urls = e->mimeData()->urls();
          if (urls.isEmpty())  
              return;
      
          int nsize = urls.size();
          
          for(QUrl u : urls)
          {
              QString filepath = u.toLocalFile();
              m_pathlist.append(filepath);
          }
      
          imp->textEditFilePath->clear();
          for (QString path : m_pathlist)
          {
              imp->textEditFilePath->append(path);
          }
      }
     
     
     void MainWidget::dragMoveEvent(QDragMoveEvent* event)
     { 
         Q_UNUSED(event);
         event->setDropAction(Qt::MoveAction);
         event->accept();
     }
    

    管理员权限下被禁止

    以管理员权限运行,拖拽被禁止了,无法检测到拖拽事件,dragEnterEvent,setAcceptDrops都无效。将文件拖到界面上一直显示禁止。以普通权限运行程序,发现能拖入窗口,检测到拖拽事件了。

    Win平台下程序需要拥有管理员权限,鼠标变为圈斜杠的禁止拖拽文件入窗口。
    Win平台下用qt写的程序,需要拥有管理员权限,又要实现拖拽功能,这种情况该如何处理?

    使用VC的方式


    1、窗口初始化时使其可以进行拖拽

    ::DragAcceptFiles(m_hWnd, true);

    2、在窗口过程函数处理WM_DROPFILES消息

    case WM_DROPFILES:    

        OnDropFile((HDROP)wParam)

    break;


    3、添加 OnDropFile 函数

    LRESULT CWinfff::OnDropFile(HDROP hDropInfo)
    {
        TCHAR FileName[260];
        DragQueryFile(hDropInfo, 0, FileName, 260);
        DragFinish(hDropInfo);
        return 1;
    }

        case WM_DROPFILES:
        {
            MessageBoxA(NULL, "WM_DROPFILES", "消息", 0);
    
            UINT count;
    
            char filePath[200];
            HDROP hDropInfo = (HDROP)wParam;
            count = DragQueryFileA(hDropInfo, 0xFFFFFFFF, NULL, 0);
            if (count)
            {
                for (UINT i = 0; i < count; i++)
                {
                    int pathLen = DragQueryFileA(hDropInfo, i, filePath, sizeof(filePath));
                    MessageBoxA(NULL, filePath, "消息", 0);
                }
            }
            DragFinish(hDropInfo);
    
        }
        break;


    当程序以管理员身份运行时,涉及session消息隔离,无法接收WM_DROPFILES消息。 这是

    由于拖拽其实是explorer.exe和当前进程消息通信用WM_DROPFILES消息,因为explorer.exe的权限中等权限低于管理员权限,WM_DROPFILES的消息被过滤阻挡了。所以只要在程序或者窗口初始化的时候调用ChangeWindowMessageFilter这个API改变窗口消息过滤就可以了。

    ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);

    正确的做法应该是需要放行以下三条消息:

    ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
    ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
    ChangeWindowMessageFilter(SPI_SETANIMATION, , MSGFLT_ADD);

    这里用VC的就可以解决了。但是qt程序里改用vc也还是不行。没有效果仍然是拖拽时显示鼠标禁止图标。

    Qt下使用VC的方法拖拽

    /* Drag/Drop APIs */

    WINOLEAPI  RegisterDragDrop(IN HWND hwnd, IN LPDROPTARGET pDropTarget);
    WINOLEAPI  RevokeDragDrop(IN HWND hwnd);

     

    展开全文
  • 以上就是让Qt程序以管理员权限运行的两种方法。 另外,这里还补充一个视频教程(英文):点击查看 C#程序以管理员权限运行 原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的...

    方案一:(仅适用于使用msvc编译器)

    在PRO文件中添加一行指令即可,

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

    方案二:(适用于mingw32编译器)

    先创建一个 .manifest 文件,如:app.manifest,文件内容如下:

    然后在exe所在的目录中执行mt指令(mt指令在VS自带的“开发人员命令提示”工具中)

    mt.exe -manifest "app.manifest" -outputresource:"app.exe";#

    注意:exe和manifest文件要在同一目录中。

    以上就是让Qt程序以管理员权限运行的两种方法。

    另外,这里还补充一个视频教程(英文):点击查看

    C&num;程序以管理员权限运行

    原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员 ...

    【转】 C&num;程序以管理员权限运行

    C#程序以管理员权限运行在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无 ...

    C&num;程序 -- 以管理员权限运行

    阅读目录 一.判断程序是否以管理员身份运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户 ...

    golang windows程序获取管理员权限(UAC ) via gocn

    golang windows程序获取管理员权限(UAC ) 在windows上执行有关系统设置命令的时候需要管理员权限才能操作,比如修改网卡的禁用.启用状态.双击执行是不能正确执行命令的,只有右键以管 ...

    C&num;程序以管理员权限运行【我采用了第二种,比较好用】

    在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录.系统注册表 ...

    C&num;程序以管理员权限运行&lpar;ZT&rpar;

    本文转载:http://www.cnblogs.com/Interkey/p/RunAsAdmin.html 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) ...

    MFC 程序以管理员权限运行

    首先,VS打开项目的属性 然后设置如图: 转载自:http://www.cnblogs.com/zzuhjf/archive/2012/09/12/2681548.html

    管理员权限运行-C&num;程序

    C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也 ...

    C&num;启用管理员权限运行程序

    方法一:关闭程序重新请求打开 static class Program { [STAThread] static void Main() { Application.EnableVisualStyle ...

    随机推荐

    mysql表名查询sql

    select table_schema,table_name,engine from information_schema.tables where table_schema not in('info ...

    2016huasacm暑假集训训练四 数论&lowbar;B

    题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/G 题意:求有多少x(1<=x<=n),使得gcd(x,n)>=m ...

    云计算---OpenStack Neutron详解

    简介: neutron是openstack核心项目之一,提供云计算环境下的虚拟网络功能 OpenStack网络(neutron)管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础 ...

    音视频 学习&amp&semi;开发&amp&semi;测试 资源

    一.FFmpeg 学习 1. 官方API文档 FFmpeg Documentation:http://www.ffmpeg.org/doxygen/trunk/index.html 2. 优秀开源项目 ...

    AWK中的OFS的问题

    echo a b c d |awk '{OFS = ":";print $0}' 我的理解是应该把输出显示为如下的方式 a:b:c:d dan但执行的结果不是这样的 a b c d ...

    &period;NET MVC Scripts&period;Render 上下文不存在问题解决方法

    要想使用 @Scripts.Render(),就要用到 BundleConfig.cs 这个类,在App_Start目录下新建一下这个类, 类的内容如下: 使用这个类需要引入 using System ...

    有个AI陪你一起写代码,是种怎样的体验?&vert; 附ICLR论文

    从前,任何程序的任何功能,都需要一行一行敲出来. 后来,程序猿要写的代码越来越多,世界上便有了各种各样的API,来减少大家的工作量.有些功能,可以让API来帮我们实现. 不过,人类写下的话,API并不 ...

    &lbrack;svc&rsqb;jdk1&period;7&period;0&lowbar;13&lpar;系列&rpar;下载url

    蛋疼了,这个版本,找了老半天没找到 最后是同事找到的 http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-x64.tar.g ...

    poj1125传播谣言(弗洛伊德,求最长路)

    Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38541   Accepted: ...

    Intel VTune性能分析器基础

    https://wenku.baidu.com/view/b0fe162ebd64783e09122b66.html

    展开全文
  • 可参考 使 Windows 下的 Qt 应用程序获得 Administrator 权限 MSVC编译器 pro中加入: QMAKE_LFLAGS_WINDOWS += "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"" 若修改后无错误也无效,修改...

    其实很简单,其实并不难。- 《空白格》

    QTCreator

    mingw32编译器

    创建 menifest.xml 并添加到工程。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="applicationname" type="win32"></assemblyIdentity>
        <description>Description of application</description>
        <!-- Identify the application security requirements. -->
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    

    pro 中添加:

    win32 {
        QMAKE_POST_LINK += mt -manifest $$PWD/menifest.xml -outputresource:$$OUT_PWD/release/$$TARGET".exe" $$escape_expand(\n\t)
    }
    

    首先找到 mt.exe 并添加到环境变量 ,添加完记得重启生效 验证 mt

    在这里插入图片描述

    若实在捋不清路径:

    • pro中添加以下语句打印验证

    message($$OUT_PWD/release/$$TARGET".exe")

    • menifest.xml 移到至 test.exe 所在路径下,执行

    mt -manifest menifest.xml -outputresource:test.exe

    MSVC编译器

    pro中加入:

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

    若修改后无错误也无效,修改一下构建目录即可。

    修改完构建目录后,若出现 启动程序失败,路径或者权限错误 的问题,则需进行以下操作:

    • 先删除构建目录下的所以文件,包括exe;并注释掉 QMAKE_LFLAGS_WINDOWS,以确保不是该宏引起的错误。

    • 重新构建成功后,再删除构建目录下的所有文件(包括exe)再加上QMAKE_LFLAGS_WINDOWS 重新构建。

    在这里插入图片描述

    QT+VS

    VS中实现很简单,一个配置即可:

    在这里插入图片描述

    展开全文
  • 参考资料:...一、项目中配置 1.mingw编译器 在pro工程文件中加入 #win32 代表是Windows环境下的编译 win32 { RC_FILE = servercenter.rc }右键项目,新建qt-qrc文件,rc文件中写入(就一行): 1 24 ...
  • 而当我们对程序右键,以管理员权限运行时,又可以正常创建文件。 此时,说明我们的程序默认不具备管理员权限,故而无法对某些目录进行写入。 根据我们的编译器不同,有如下2种情况。 一、使用MSVC编译器 在pro文件中...
  • 执行以下指令(每次生成exe都要执行) v1.0.0\bin>mt.exe -manifest "getAdmin.manifest" -outputresource:"Video.exe" 4,成功后 会有盾牌 图标 5,打开exe 升级后 打开exe 执行,调用windows api, Qt QProcess...
  • 例如 程序中需要对系统文件进行删除,但因为没有管理员权限或用户未选择以管理员权限运行,删除文件操作执行失败 在Qt pro文件中增加一下一条语句 QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\'...
  • Qt 程序添加管理员权限的几种方法

    千次阅读 2020-03-12 19:28:41
    一、项目中配置 1. mingw编译器 在pro工程文件中加入 RC_FILE=main.rc rc文件,之前一篇博客中为程序增加图标也用到此文件,没错!可以为程序添加icon ...IDI_ICON1 ICON ...第二行是增加权限,注意是man...
  • QT程序默认管理员权限(UAC)运行

    千次阅读 2020-07-08 01:33:53
    首选声明一下“设置QT程序默认为管理员运行“”并不是我原创,我只是把我...接下来就开始跟大家一样有问题找百度,一搜“QT管理员权限”关键字,不出所料超级多的博客有解决方案,心想这问题解决的真是so easy,因...
  • QT VS2017 权限管理用户管理,单独输入界面, 界面设计,用户信息保存到sqlite数据库中,查询输出等。
  • Qt在开发 windows 10的时候,经常会因没有权限而不能对文件的读写造成程序各种不知到的bug,以管理员方式运行就不会出现这种问题,为了解决这个问题,故写了这个博客。随带把加载QT程序的图标和QT的版本也说一下。 1...
  • QT编译生成的exe启动时直接以管理员权限启动前言不同编译器环境下权限增加方式1. MSVC下加权限的方法2. MinGW下加权限的方法 前言 我们通过编译生成的exe有时候因为一些账户权限问题,可能会导致获取一些信息失败,...
  • Qt 程序管理员权限的几种方法

    千次阅读 2021-05-10 21:47:17
    一、项目中配置1. mingw编译器在pro工程文件中加入RC_FILE=main.rcrc文件,之前一篇博客中为程序增加图标也用到此文件,没错!可以为程序添加iconmain.rcIDI_...第二行是增加权限,注意是manifest,不是mainfest。之...
  • QT在Windows下面运行,部分代码获取管理员权限,生成不带盾牌的图标。 if(file_suffix=="") { if (!IsUserAnAdmin()) { QString filePath = QCoreApplication::applicationFilePath(); // 以管理员权限,执行exe程序...
  • Qt程序获取管理员权限

    千次阅读 2019-11-15 14:34:15
    QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='...上面那句死活都不得行,提示路径或权限错误,删掉后面部分就可以了 QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'" ...
  • QT中使用以管理员权限启动一个进程

    千次阅读 2018-02-02 11:09:23
    //临时提升管理员权限 std::wstring path = QCoreApplication::applicationDirPath().toStdWString(); std::wstring file= QString(QCoreApplication::applicationDirPath()+"/regSms.exe").toStdWString(); int ...
  • 1、Qt Creator中 方案一:(仅适用于使用msvc编译器) 在PRO文件中添加一行指令即可, 1 QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'" MANIFESTUAC内容如下: <?xml ...
  • 使用管理员权限运行QtCreator的方法

    千次阅读 2022-04-05 03:09:34
    重装opencv时需要使用管理员权限Qt中进行编译。伤亡搜索了使用管理员权限运行Qt的方法。主要参考以下博客。 关于Qt中sudo的权限问题 linux下面使用root运行QTcreator QT以root权限run/debug(QtCreator如何运行...
  • 正确写法: QMAKE_LFLAGS += \"/MANIFESTUAC:level=\'requireAdministrator\' uiAccess=\'false\'\" 网络上查找到的 ...QMAKE_LFLAGS += /MANIFESTUAC:level=\'requireAdministrator\' uiAccess=\'false\'\" ...
  • 屏蔽 ctrl+alt+delete 需要管理员权限 其他均可屏蔽,有需要另加即可
  • 希望Qt开发程序以管理员身份运行,只需要在pro中添加如下代码: QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS
  • 以上就是让Qt程序以管理员权限运行的两种方法。 另外,这里还补充一个视频教程(英文):点击查看 C#程序以管理员权限运行 原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的...
  • QT程序默认管理员权限(UAC)运行

    万次阅读 2014-06-03 03:27:52
    解决方案一 在pro文件中添加 QMAKE_LFLAGS  ...把MyApp.exe,MyApp.exe.manifest,mt.exe放到同一个目录,打开命令提示符,cd到该目录,执行下面命令 ...QT管理员权限补丁
  • 问题原因:需要提升用户权限 解决办法: .cpp文件 void XXX::StartPocess() { QDir filedir; QString filePath,exeName,exepath;; exeName = "/XXX.exe"; //此处更改为你自己的exe文件 filePath = ...
  • Qtcreator生成的exe默认是不支持管理员权限的,就是生成的exe图标右下角有一个盾牌的标志,有2种方式可以实现,亲测通过。 首先:新建 xxx.exe.manifest文件,名字随便取。内容如下: <?xml version='1.0' ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,073
精华内容 2,029
关键字:

qt 管理员权限