C++ 从Qt应用程序执行MSI文件
我编写了一个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
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”)使用Windowsrunas
将相应的字符串替换为自己的字符串(为此,您应该检查,因为这与Qt无关,而与runas的命令行参数有关)
此外,您可以使用管理员权限运行您的Qt应用程序。为了避免用户手动操作的麻烦,您可以使用来告诉Windows您的Qt应用程序的默认执行应该是什么。我建议不要这样做,因为您的应用程序可能会在系统中引入安全漏洞t您可能要为此负责。问题源于MSI文件是一个安装文件,因此需要管理员权限
有两种选择:
- 尝试使用
QDesktopServices::openUrl(QUrl(“文件://”),QUrl::TolerantMode)代码>(如建议)而不是使用QProcess
- 通过调用
QProcess::startDetached(“runas/user:\user msiFileName”)使用Windowsrunas
将相应的字符串替换为自己的字符串(为此,您应该检查,因为这与Qt无关,而与runas的命令行参数有关)
此外,您可以使用管理员权限运行您的Qt应用程序。为了避免用户手动操作的麻烦,您可以使用来告诉Windows您的Qt应用程序的默认执行应该是什么。我建议不要这样做,因为您的应用程序可能会在系统中引入安全漏洞t您可能对此负责。请给出一个简短的代码示例。我们无法解决看不到的代码中的错误。我已经给出了一个链接,它完全如图所示。使用QProcess时不应出现此问题。您的代码中可能存在错误或dll冲突。如果无法复制,我们将无法帮助解决这两个问题。我可以向您保证,我在我的几个应用程序中使用QProcess,但没有一个这样做。请给出一个简短的代码示例。我们无法解决看不到的代码中的错误。我已经给出了一个链接,它完全如图所示。使用QProcess应该不会出现此问题。您的代码中可能存在错误或dll冲突。如果我们无法解决,我们也无法提供帮助复制。我可以向您保证,我在我的几个应用程序中使用了QProcess,但没有一个这样做。谢谢,这解决了问题。谢谢,这解决了问题。