-
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:17QT生成的EXE文件,自动申请管理员权限 -
Qt管理员权限工具.rar
2019-09-30 23:18:20运行此软件,选中工程pro文件,选中图标文件,然后重新编译程序,就是以管理员身份运行了 -
QT管理员权限补丁
2014-06-03 03:28:35让QT程序默认以管理员权限运行,方便修改注册表。 -
QT管理员权限下拖拽文件进入窗口
2021-08-26 19:28:43如果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程序以管理员权限运行(UAC)
2021-05-15 01:39:39以上就是让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#程序以管理员权限运行
原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员 ...
【转】 C#程序以管理员权限运行
C#程序以管理员权限运行在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无 ...
C#程序 -- 以管理员权限运行
阅读目录 一.判断程序是否以管理员身份运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户 ...
golang windows程序获取管理员权限(UAC ) via gocn
golang windows程序获取管理员权限(UAC ) 在windows上执行有关系统设置命令的时候需要管理员权限才能操作,比如修改网卡的禁用.启用状态.双击执行是不能正确执行命令的,只有右键以管 ...
C#程序以管理员权限运行【我采用了第二种,比较好用】
在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录.系统注册表 ...
C#程序以管理员权限运行(ZT)
本文转载: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#程序
C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也 ...
C#启用管理员权限运行程序
方法一:关闭程序重新请求打开 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暑假集训训练四 数论_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),物理网络基础 ...
音视频 学习&;开发&;测试 资源
一.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 ...
.NET MVC Scripts.Render 上下文不存在问题解决方法
要想使用 @Scripts.Render(),就要用到 BundleConfig.cs 这个类,在App_Start目录下新建一下这个类, 类的内容如下: 使用这个类需要引入 using System ...
有个AI陪你一起写代码,是种怎样的体验?| 附ICLR论文
从前,任何程序的任何功能,都需要一行一行敲出来. 后来,程序猿要写的代码越来越多,世界上便有了各种各样的API,来减少大家的工作量.有些功能,可以让API来帮我们实现. 不过,人类写下的话,API并不 ...
[svc]jdk1.7.0_13(系列)下载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
-
Qt - exe添加管理员权限
2020-11-10 20:04:53可参考 使 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中实现很简单,一个配置即可:
-
QT 编译后的程序获得管理员权限
2022-04-01 13:51:49参考资料:...一、项目中配置 1.mingw编译器 在pro工程文件中加入 #win32 代表是Windows环境下的编译 win32 { RC_FILE = servercenter.rc }右键项目,新建qt-qrc文件,rc文件中写入(就一行): 1 24 ... -
给Qt程序添加管理员权限总结(一定有你没见过的方式)
2020-08-22 11:57:03而当我们对程序右键,以管理员权限运行时,又可以正常创建文件。 此时,说明我们的程序默认不具备管理员权限,故而无法对某些目录进行写入。 根据我们的编译器不同,有如下2种情况。 一、使用MSVC编译器 在pro文件中... -
Qt 管理员权限运行程序(基于vs编译器)
2020-01-07 18:11:01执行以下指令(每次生成exe都要执行) v1.0.0\bin>mt.exe -manifest "getAdmin.manifest" -outputresource:"Video.exe" 4,成功后 会有盾牌 图标 5,打开exe 升级后 打开exe 执行,调用windows api, Qt QProcess... -
Qt程序 请求获取管理员权限
2021-05-24 13:23:05例如 程序中需要对系统文件进行删除,但因为没有管理员权限或用户未选择以管理员权限运行,删除文件操作执行失败 在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 权限管理用户管理,单独输入界面
2020-07-28 10:40:36QT VS2017 权限管理用户管理,单独输入界面, 界面设计,用户信息保存到sqlite数据库中,查询输出等。 -
Qt 获取管理员权限运行,更改图标,添加版本
2019-12-22 11:12:11Qt在开发 windows 10的时候,经常会因没有权限而不能对文件的读写造成程序各种不知到的bug,以管理员方式运行就不会出现这种问题,为了解决这个问题,故写了这个博客。随带把加载QT程序的图标和QT的版本也说一下。 1... -
QT编译生成的exe启动时直接以管理员权限启动
2021-08-01 14:49:46QT编译生成的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获取管理员权限的问题
2021-08-31 11:23:04QT在Windows下面运行,部分代码获取管理员权限,生成不带盾牌的图标。 if(file_suffix=="") { if (!IsUserAnAdmin()) { QString filePath = QCoreApplication::applicationFilePath(); // 以管理员权限,执行exe程序... -
Qt程序获取管理员权限
2019-11-15 14:34:15QMAKE_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 ... -
如何给QT程序添加管理员权限(UAC)的几种方法
2019-08-01 11:24:471、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如何运行... -
Qt+MSVC下应用程序管理员权限运行.
2019-11-28 15:53:50正确写法: QMAKE_LFLAGS += \"/MANIFESTUAC:level=\'requireAdministrator\' uiAccess=\'false\'\" 网络上查找到的 ...QMAKE_LFLAGS += /MANIFESTUAC:level=\'requireAdministrator\' uiAccess=\'false\'\" ... -
c++ QT 屏蔽 系统按键 需要管理员权限
2021-05-27 16:21:44屏蔽 ctrl+alt+delete 需要管理员权限 其他均可屏蔽,有需要另加即可 -
Qt程序以管理员身份运行
2021-05-26 15:29:49希望Qt开发程序以管理员身份运行,只需要在pro中添加如下代码: QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS -
linux下qt程序以管理员运行,如何让QT程序以管理员权限运行(UAC)
2021-05-15 01:41:01以上就是让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管理员权限补丁 -
QT打开外部“以管理员身份运行”权限的exe应用程序失败
2021-07-30 10:08:48问题原因:需要提升用户权限 解决办法: .cpp文件 void XXX::StartPocess() { QDir filedir; QString filePath,exeName,exepath;; exeName = "/XXX.exe"; //此处更改为你自己的exe文件 filePath = ... -
QtCreator生成的exe添加管理员权限
2022-04-01 14:33:25Qtcreator生成的exe默认是不支持管理员权限的,就是生成的exe图标右下角有一个盾牌的标志,有2种方式可以实现,亲测通过。 首先:新建 xxx.exe.manifest文件,名字随便取。内容如下: <?xml version='1.0' ...