簡體   English   中英

QT以普通用戶身份啟動程序

[英]QT Start program as regular user

我的自動更新程序需要管理員權限才能運行,因為它修改了程序文件夾中的文件。 一切正常。

但是,更新完成后,我希望我的updater.exe啟動myApplication.exe沒有管理員權限。

我目前用來從updater.exe啟動myApplication.exe的代碼:

bool started = QDesktopServices::openUrl(QUrl::fromLocalFile(exeFileName));
if (started)
{
    QApplication::quit();
}

問題是,當myApplication.exe以管理員myApplication.exe啟動時,它會弄亂我的本地路徑,例如:

QString addin_path = QStandardPaths::writableLocation(QStandardPaths::DataLocation);

指向admin用戶文件夾。 而不是運行應用程序的實際用戶。

這里有什么想法?

更新

基於Merlin069的答案,我正在測試以下內容:

TCHAR username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName((TCHAR*)username, &size);

qDebug() << QHostInfo::localHostName();

QProcess::startDetached("runas \"/user:<" + QHostInfo::localHostName() + ">\"" + username + ""\" \"" + exeFileName + "\");

我假設你在這里使用Windows。

您可以使用QProcess :: startDetached啟動應用程序,並使用Windows RunAs命令行程序以其他用戶身份運行。

例如: -

QProcess::startDetached("runas /user:<localmachinename>\user exeFileName");

如果路徑包含空格,請用引號括起來: -

QProcess::startDetached("runas \"/user:<localmachinename>\user\" \"exeFileName\"");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM