Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从Qt应用程序执行MSI文件_C++_Qt_Windows Installer - Fatal编程技术网

C++ 从Qt应用程序执行MSI文件

C++ 从Qt应用程序执行MSI文件,c++,qt,windows-installer,C++,Qt,Windows Installer,我编写了一个Qt应用程序,它下载并执行一个MSI文件。执行通过QProcess完成,并使用中提供的信息 每当我使用QProcess运行它时,就会引发异常: 引发异常:读取访问冲突 这似乎是一个权限管理问题。但是我不知道问题到底出在哪里,也不知道如何解决。下面是一个示例代码段: QProcess *process = new QProcess(this); QString program = "file.msi"; QString folder = "C:\\Users\\user\\Downlo

我编写了一个Qt应用程序,它下载并执行一个MSI文件。执行通过
QProcess
完成,并使用中提供的信息

每当我使用
QProcess
运行它时,就会引发异常:

引发异常:读取访问冲突

这似乎是一个权限管理问题。但是我不知道问题到底出在哪里,也不知道如何解决。下面是一个示例代码段:

QProcess *process = new QProcess(this);
QString program = "file.msi";
QString folder = "C:\\Users\\user\\Downloads\\";
process->start(program, QStringList() << folder);
QProcess*process=新的QProcess(此);
QString program=“file.msi”;
QString folder=“C:\\Users\\user\\Downloads\\”;

process->start(程序,QStringList()问题源于MSI文件是安装文件,因此需要管理员权限

有两种选择:

  • 尝试使用
    QDesktopServices::openUrl(QUrl(“文件://”),QUrl::TolerantMode)(如建议)而不是使用
    QProcess
  • 通过调用
    QProcess::startDetached(“runas/user:\user msiFileName”)使用Windows
    runas
    将相应的字符串替换为自己的字符串(为此,您应该检查,因为这与Qt无关,而与
    runas的命令行参数有关)

此外,您可以使用管理员权限运行您的Qt应用程序。为了避免用户手动操作的麻烦,您可以使用来告诉Windows您的Qt应用程序的默认执行应该是什么。我建议不要这样做,因为您的应用程序可能会在系统中引入安全漏洞t您可能要为此负责。

问题源于MSI文件是一个安装文件,因此需要管理员权限

有两种选择:

  • 尝试使用
    QDesktopServices::openUrl(QUrl(“文件://”),QUrl::TolerantMode)(如建议)而不是使用
    QProcess
  • 通过调用
    QProcess::startDetached(“runas/user:\user msiFileName”)使用Windows
    runas
    将相应的字符串替换为自己的字符串(为此,您应该检查,因为这与Qt无关,而与
    runas的命令行参数有关)

此外,您可以使用管理员权限运行您的Qt应用程序。为了避免用户手动操作的麻烦,您可以使用来告诉Windows您的Qt应用程序的默认执行应该是什么。我建议不要这样做,因为您的应用程序可能会在系统中引入安全漏洞t您可能对此负责。

请给出一个简短的代码示例。我们无法解决看不到的代码中的错误。我已经给出了一个链接,它完全如图所示。使用QProcess时不应出现此问题。您的代码中可能存在错误或dll冲突。如果无法复制,我们将无法帮助解决这两个问题。我可以向您保证,我在我的几个应用程序中使用QProcess,但没有一个这样做。请给出一个简短的代码示例。我们无法解决看不到的代码中的错误。我已经给出了一个链接,它完全如图所示。使用QProcess应该不会出现此问题。您的代码中可能存在错误或dll冲突。如果我们无法解决,我们也无法提供帮助复制。我可以向您保证,我在我的几个应用程序中使用了QProcess,但没有一个这样做。谢谢,这解决了问题。谢谢,这解决了问题。