【发布时间】:2014-04-28 10:42:39
【问题描述】:
我的自动更新程序需要管理员权限才能运行,因为它会修改程序文件夹中的文件。这一切都很好。
但是,当更新完成后,我希望我的 updater.exe 启动 myApplication.exe 但没有管理员权限。
我目前用来从 updater.exe 启动 myApplication.exe 的代码:
bool started = QDesktopServices::openUrl(QUrl::fromLocalFile(exeFileName));
if (started)
{
QApplication::quit();
}
问题是当myApplication.exe 以管理员身份启动时,它会弄乱我的本地路径,例如:
QString addin_path = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
指向管理员用户文件夹。而不是运行应用程序的实际用户。
这里有什么想法吗?
更新
根据 Merlin069 的回答,我正在测试以下内容:
TCHAR username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName((TCHAR*)username, &size);
qDebug() << QHostInfo::localHostName();
QProcess::startDetached("runas \"/user:<" + QHostInfo::localHostName() + ">\"" + username + ""\" \"" + exeFileName + "\");
【问题讨论】: