2017-08-14 2 views
0

MSIファイルをダウンロードして実行するQtアプリケーションを作成しました。実行はQProcessで行われ、this questionで提供されている情報を使用しています。QtアプリケーションからMSIファイルを実行する

私は例外がスローされQProcessを使用して、それを実行するたびに:スロー

例外:著作権管理の問題であるように思われ

アクセス違反をお読みください。しかし、どこに問題があるのか​​、それをどう修正するのか分かりません。

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

これに使用しているコードの簡単な例を示します。私たちが見ることのできないコードのバグは解決できません。 – drescherjm

+0

私はリンクとそれを正確に示しました。 – Cherple

+0

QProcessを使用してこの問題を起こすべきではありません。コードやDLLの競合にバグがある可能性があります。私たちが再現できなければ、私たちはどちらかを助けることができません。私はいくつかのアプリケーションでQProcessを使用することを保証することができます。 – drescherjm

答えて

1

問題は、MSIファイルは、管理者権限が必要ですので、インストールファイルであるという事実から来ている:ここでは例のコードスニペットです。

2つのオプションがあります。

  • here示唆したように)QDesktopServices::openUrl(QUrl("file:///<path to your MSI file>"), QUrl::TolerantMode));を使用してみてくださいではなくQProcessを使用します。
  • これはQtのではなくrunasのコマンドライン引数とは何の関係もありませんので、あなたがdocumentation of runasをチェックする必要があり、そのためにあなたが(あなた自身でそれぞれの文字列を置き換えるQProcess::startDetached("runas /user:<localmachinename>\user msiFileName");を呼び出すことにより、Windowsのrunasを使用してください。

さらに、管理者権限でQtアプリケーションを実行することもできます。手動でルーブルを保存するには、thisを使用してQtアプリケーションのデフォルト実行をWindowsに伝えることができます。あなたのアプリケーションがあなたに責任を負うことができるセキュリティ違反をシステムに導入する可能性があるからです。

+0

ありがとう、これは問題を解決しました。 – Cherple

関連する問題