在 Windows 中,如果我拒绝应用程序的 UAC 请求,为什么它不能继续运行?

How*_*ard 17 windows uac

来自 Linux/Unix 背景,我无法理解 UAC 在 Windows 中的工作原理。

我听说 UAC 像sudo. 我的 Linux 应用程序可以在调用sudo.

但是在 Windows 中,似乎所有需要 UAC 确认的应用程序都必须在执行任何实际工作之前授予 UAC!我运行一个应用程序,它要求我进行 UAC 确认,我拒绝了 - 该应用程序根本无法运行。

那么UAC是这样工作的吗?

sudo su
./run_app
Run Code Online (Sandbox Code Playgroud)

而不是:

./do_work1
sudo su
./du_work2
Run Code Online (Sandbox Code Playgroud)

感谢大家的精彩回答!

Nic*_*ton 19

在 Windows 下,当您尝试运行在文件中嵌入的清单中标记为需要提升的可执行文件并且您尚未运行提升时,会触发 UAC 提示。该行为更像是 setuid 而不是 su,因为它是文件,而不是告诉操作系统可执行文件将使用不同凭据运行的命令。


Kar*_*ran 12

当以标准用户身份登录 Windows 时,会创建一个登录会话并分配一个仅包含最基本权限的令牌。这样,新的登录会话就无法进行会影响整个系统的更改。以管理员组中的用户身份登录时,会分配两个单独的令牌。第一个令牌包含通常授予管理员的所有权限,第二个是类似于标准用户将收到的受限令牌。然后,包括 Windows Shell 在内的用户应用程序会使用受限令牌启动,从而导致即使在管理员帐户下也能降低特权环境。当应用程序请求更高的权限或单击“以管理员身份运行”时,UAC 将提示确认,如果获得同意,

据我了解,最后一句话的意思是,要么在应用加载之前显示 UAC 对话框,以便它以不受限制的令牌启动,要么以标准用户权限启动,并且需要在某些情况下提升权限工作,它需要获得用户的同意,然后产生一个新进程,然后以提升的权限运行。进程启动时分配的令牌决定了它的权限。此令牌以后无法更改,因此如果需要更多权限,则需要生成新进程。

这样,UAC 与sudo并不完全相同。

  • 实际上,它与 sudo 相同。运行“sudo su”不会为您当前的 shell 添加 root 权限,它会在单独的进程中启动一个 *new* shell。如果您退出该 shell,您将返回到第一个。 (4认同)