首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT启动程序作为常规用户

QT启动程序作为常规用户
EN

Stack Overflow用户
提问于 2014-04-28 10:42:39
回答 1查看 1.8K关注 0票数 3

我的自动更新程序需要管理员权限才能运行,因为它修改了程序文件夹中的文件。一切都很好。

但是,当更新完成后,我希望我的updater.exe启动myApplication.exe,但不需要管理特权的

我目前用于从myApplication.exe启动updater.exe的代码:

代码语言:javascript
复制
bool started = QDesktopServices::openUrl(QUrl::fromLocalFile(exeFileName));
if (started)
{
    QApplication::quit();
}

问题是,当myApplication.exe作为管理员启动时,它会扰乱我的本地路径,例如:

代码语言:javascript
复制
QString addin_path = QStandardPaths::writableLocation(QStandardPaths::DataLocation);

指向管理用户文件夹。而不是运行应用程序的实际用户。

这里有什么想法吗?

更新

基于Merlin069的回答,我正在测试以下内容:

代码语言:javascript
复制
TCHAR username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName((TCHAR*)username, &size);

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

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

回答 1

Stack Overflow用户

发布于 2014-04-28 12:08:51

我猜你在这里使用Windows。

您可以使用QProcess::startDetached启动应用程序,并使用鲁纳斯命令行程序作为不同的用户运行。

例如:-

代码语言:javascript
复制
QProcess::startDetached("runas /user:<localmachinename>\user exeFileName");

如果路径包含空格,则用引号包围它们:-

代码语言:javascript
复制
QProcess::startDetached("runas \"/user:<localmachinename>\user\" \"exeFileName\"");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23338959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档