[英]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.