• 6324阅读
  • 6回复

qt发布程序在win7运行问题 [复制链接]

上一主题 下一主题
离线baiwan111
 

只看楼主 倒序阅读 楼主  发表于: 2013-05-25
关键词: win7注册表路径
最近在开发qt在windows下的跨平台开发,涉及到windows的所有版本,发布的静态版本,目前在windows xp(32)上运行没有问题,但是有个客户的电脑是win7的土耳其系统,在其电脑上运行程序,发现无法运行,出现两个致命问题:
(1)无法添加注册表,因为我要实现开机自动启动功能,我的代码如下:
void MainWindow::Readregedit()
{
#ifdef Q_OS_WIN
      //qDebug()<<ui->checkBox_5->isChecked();
     QSettings *reg=new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
                                                         "\\Windows\\CurrentVersion\\Run",QSettings::NativeFormat);//开机自动运行
     if (Restart_para)
     {
             QString tmpPath;
             tmpPath = QApplication::applicationFilePath();
             tmpPath = tmpPath.replace("/","\\",Qt::CaseInsensitive);
             reg->setValue("upsmate_en",tmpPath);
      }
      else
      {
             reg->setValue("upsmate_en","");
             reg->remove("upsmate_en");
      }
      delete reg;
#endif
这里用了QApplication::applicationFilePath();这个函数读取程序路径
}
(2)我的程序路径读取不到,我使用的函数是:
path.dir = QApplication::applicationDirPath();
这个问题主要有两种情况,在有的win7系统上,只要不把程序安装在C:\Program Files下就可以运行,而有的win7系统是都不行,,初步估计是函数在win7系统下无法读到程序路径。
现在客户在急等解决方法,希望各位大侠感觉帮忙,跪谢跪谢!
网上搜索方法,有的人说是因为在win7系统下没有管理员权限,可是我在win7下就是以管理员登陆的,另外qt要怎么获取win7的管理员权限?
离线ffii4455

只看该作者 1楼 发表于: 2013-05-25
写一个manifest文件就行了,百度上一搜就有
离线baiwan111

只看该作者 2楼 发表于: 2013-05-25
回 2楼(ffii4455) 的帖子
也就是说,我的那些问题确实是因为没有win7的管理员权限引起的?
离线ffii4455

只看该作者 3楼 发表于: 2013-05-25
回 3楼(baiwan111) 的帖子
写不了注册表肯定是权限的问题。第二个问题不清楚。。
离线toby520

只看该作者 4楼 发表于: 2013-05-27
我来说下吧,以前也碰到这样的问题,mingw版本 win 7上面无法写注册表,且未获得管理员权限的机器暂时没有办法修改注册表,而vs版本,需要加入manifest文件到pro里面 QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'"
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线uidab

只看该作者 5楼 发表于: 2013-07-11
tmpPath.replace

这个建议改成QDir::toNativeSeparators,避免出现替换错。

我不知道你遇到的win7版本,Qt版本,我用Qt4.6.3没遇到过这个情况。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线彩阳

只看该作者 6楼 发表于: 2013-07-11
C:\Program Files这个路径有一个空格,当然无法读取了。
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个