在 Windows 7 中,我想安排一个程序以管理员权限运行,而不需要用户每次运行计划任务时都响应提示(请求提升权限)。有没有办法在不禁用所有应用程序的 UAC 提示的情况下实现此目标?
可能不相关,但我正尝试让该程序在启动时运行。
答案1
打开任务计划程序
创建新任务
在“常规”选项卡中 - 确保输入以下设置:
“无论用户是否登录都运行”
“以最高权限运行”
“配置”(您的操作系统)
在“触发器”选项卡中,添加触发器(计划)时 - 确保选中“已启用”复选框
其他选项卡也需要查看(操作等) - 但这些是您在尝试确保任务运行时应该指定的选项,无论哪个用户登录,并且没有 UAC 提示。
保存任务时,系统将提示您输入用户名和密码 - 此用户名和密码是用于执行任务的用户。如果您以“最高权限”运行任务,则需要确保这是一个管理员帐户。
答案2
答案3
我读到,需要安排任务在 NT AUTHORITY\SYSTEM 帐户下运行,以便以管理员身份执行作业。“最高权限”并没有给我们带来同样的效果。请注意,在 SYSTEM 运行作业的情况下,GUI 选项会变灰,因此不会出现提示。
答案4
奇怪的是,任务计划程序答案对我来说不起作用。结合经常选择要自动启动哪些应用程序以及不自动启动哪些应用程序的需求,我想出了一个 PowerShell 脚本来解决这个问题:
# On UAC-enabled systems, to make sure a script is running with full admin privileges, add this code at the beginning of your script:
param([switch]$Elevated)
function Test-Admin {
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
if ((Test-Admin) -eq $false) {
if ($elevated) {
# tried to elevate, did not work, aborting
} else {
Start-Process pwsh -Verb RunAs -ArgumentList ('-noprofile -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}
}
'Running with full privileges'
& "path\to\file"
& "C:\Program Files\Example.exe"
exit
它只是让我更加灵活。我将此脚本的快捷方式放入启动文件夹中,目标是:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden path\to\script.ps1