Qt之开机自启动及拥有管理员权限
2016-04-07 14:53
295 查看
源地址:http://blog.sina.cn/dpool/blog/s/blog_a6fb6cc90101feia.html
Windows开机自启动的程序很多,包括系统软件、杀毒软件、一些其他安装软件等等。当然可以禁止,通过软件管理或者手动删除对应的注册表中的项即可!但是为了系统的服务或者操作上的方便,我们往往需要开机自启动一些服务。 以下是开机的启动项:
![](http://s15.sinaimg.cn/bmiddle/a6fb6cc9gx6CkPqGnaCde&690)
X
Qt也不例外,在发布Qt程序的时候,我们通常也需要开机自启动自己的程序,那么如何实现呢?主要采用修改注册表的方式。
代码比较简单:
#define REG_RUN 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'
void SettingDialog::setAutoStart(bool is_auto_start)
{
QString application_name = QApplication::applicationName();
QSettings *settings = new QSettings(REG_RUN, QSettings::NativeFormat);
if(is_auto_start)
{
QString application_path = QApplication::applicationFilePath();
settings->setValue(application_name, application_path.replace('/', '\\'));
}
else
{
settings->remove(application_name);
}
delete settings;
}
相信这段代码大家都能看懂,就不多做解释了!
查看注册表:
(1)运行:regedit
(2)找到对应的路径REG_RUN
![](http://s2.sinaimg.cn/bmiddle/a6fb6cc9gx6CkKWcCpH51&690)
里面的内容并没有加进去,当然是因为我们并没有调用自启动的方法!
可根据setAutoStart的不同参数来添加或者删除注册表中的项。
调用方法后:
这样以来,大部分工作已经做完!
修改注册表的时候,可能会注册失败,杀毒软件或者Windows也会进行提示:是否禁用或者允许程序更改。。。好的,怎么解决呢?
(1)让程序拥有管理员权限
(2)设置电脑的UAC级别
关于(1),何为程序拥有管理员权限?即程序运行的时候不需要右键->以管理员权限运行就可默认以此权限运行。在VS2008以后,配置比较简单,工程右键->属性->链接器->清单文件->UAC执行级别
(requireAdministrator)即可。
(3)Creator配置需要在pro中添加QMAKE_LFLAGS += /MANIFESTUAC:'level='requireAdministrator'uiAccess='false''
重新生成之后,可执行程序就会发生相应的变化(旁边多了一个小盾牌)!
![](http://s1.sinaimg.cn/bmiddle/a6fb6cc9gx6CkPQRqfK70&690)
![](http://s13.sinaimg.cn/bmiddle/a6fb6cc9gx6CkPRtOTG4c&690)
关于(2),可参考UAC及其设置来对UAC进行设置。
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:╰☆奋斗ing❤孩子` 原文:http://blog.sina.cn/dpool/blog/s/blog_a6fb6cc90101feia.html?vt=4。
Windows开机自启动的程序很多,包括系统软件、杀毒软件、一些其他安装软件等等。当然可以禁止,通过软件管理或者手动删除对应的注册表中的项即可!但是为了系统的服务或者操作上的方便,我们往往需要开机自启动一些服务。 以下是开机的启动项:
X
Qt也不例外,在发布Qt程序的时候,我们通常也需要开机自启动自己的程序,那么如何实现呢?主要采用修改注册表的方式。
代码比较简单:
#define REG_RUN 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'
void SettingDialog::setAutoStart(bool is_auto_start)
{
QString application_name = QApplication::applicationName();
QSettings *settings = new QSettings(REG_RUN, QSettings::NativeFormat);
if(is_auto_start)
{
QString application_path = QApplication::applicationFilePath();
settings->setValue(application_name, application_path.replace('/', '\\'));
}
else
{
settings->remove(application_name);
}
delete settings;
}
相信这段代码大家都能看懂,就不多做解释了!
查看注册表:
(1)运行:regedit
(2)找到对应的路径REG_RUN
里面的内容并没有加进去,当然是因为我们并没有调用自启动的方法!
可根据setAutoStart的不同参数来添加或者删除注册表中的项。
调用方法后:
这样以来,大部分工作已经做完!
修改注册表的时候,可能会注册失败,杀毒软件或者Windows也会进行提示:是否禁用或者允许程序更改。。。好的,怎么解决呢?
(1)让程序拥有管理员权限
(2)设置电脑的UAC级别
关于(1),何为程序拥有管理员权限?即程序运行的时候不需要右键->以管理员权限运行就可默认以此权限运行。在VS2008以后,配置比较简单,工程右键->属性->链接器->清单文件->UAC执行级别
(requireAdministrator)即可。
(3)Creator配置需要在pro中添加QMAKE_LFLAGS += /MANIFESTUAC:'level='requireAdministrator'uiAccess='false''
重新生成之后,可执行程序就会发生相应的变化(旁边多了一个小盾牌)!
关于(2),可参考UAC及其设置来对UAC进行设置。
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:╰☆奋斗ing❤孩子` 原文:http://blog.sina.cn/dpool/blog/s/blog_a6fb6cc90101feia.html?vt=4。
相关文章推荐
- Qt录音程序
- Qt多工程多目录的编译案例
- Qt 示例学习--1. enginio qml todos
- QT工程pro设置实践(with QtCreator)----非弄的像VS一样才顺手?
- PyQt4进度条QProgressBar
- Qt 多线程与数据库操作需要注意的几点问题
- 将Qt 动态链接生成的exe及依赖dll打包方法
- Qt之VLFeat SLIC超像素分割(Cpp版)
- opencv环境在QT的配置
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- PyQt4滑块QSlider、标签QLabel
- QT 多线程小结
- qt 信号槽默认参数 toggled 和 trigger的区别
- 环境配置:Qt5.5+VS2013+OpenCv3.1.0+Win7(64bit)
- ros下qt creator环境搭建
- QTimer
- 关于qt的集成开发环境
- QT5 OpenGL (四, 绘制立体图形)
- Qt for iOS,Qt 与Objective C混合编程
- VS-Qt环境下dll