c++ - QProcess如何请求Windows UAC绕过密码使用runAs从管理员帐户进行管理员级别命令
问题描述
问题:谁能向我解释如何调用 UAC?此时,我需要提升一个 Powershell 会话。我过去使用过或在此处看到的所有其他方法都需要密码。我需要绕过密码。有关更多信息,请参阅以下功能下的说明:
void MainWindow::execute_command(QString param)
{
// In this case assume param is simply Remove-LocalUser "User name"
QProcess *process = new QProcess();
QStringList params;
QString command = "powershell";
params << "-c" << "Start-Process powershell.exe -Verb runAs " << param;
process->start(command, params);
process->waitForFinished();
process->kill();
}
如果我尝试任何管理员级别的命令,它无法在 Powershell 中执行,因为访问被拒绝。我知道可以提升用户访问权限的各种方法。但据我所知,所有这些都需要用户输入密码。默认情况下,运行此程序的任何帐户都是管理员或域管理员;因此,我希望召唤 UAC 将使用户能够确认并接受提升请求以通过管理员 Powershell 进行拉取。
解决方案
我阅读您的问题的方式是您希望完全避免 UAC 提示。只要您在系统上启用 UAC 的交互式登录会话中运行程序,这是不可能的。
可以通过登录该帐户来避免输入管理员密码,但您仍然需要 UAC 提示才能使用提升的管理员令牌而不是大多数程序使用的受限令牌运行。
请注意,如果您的程序是服务,则该程序将在不提供拆分用户令牌的会话中运行,而是所有程序都将使用完整令牌运行(尽管大多数权限仍将被禁用,直到/除非进程启用它们)。
推荐阅读
- amazon-web-services - 是否有一种简单的方法可以一次撤销用户的所有 AWS Lake Formation 权限?
- sql - 具有计数查询条件的 ActiveRecord
- html - 如何在`中指定默认值
`?
- python-3.x - 使用 os.getenv 时“函数”对象不可下标
- xml - 在 SnowFlake 中加载大型 XML 文件
- python - 如何在 Python 中使用 BeautifulSoup 从文本中获取标签
- asp.net-core - Web 配置中的重定向规则返回 500
- c# - 来自 Unity 的发布请求未在 php 中接收
- java - 如何在 Java 中的某个时间段内遍历每个 hh:00?
- python - 使用 statsmodel OLS 方法拟合数据时出现值错误