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

分享于 

5分钟阅读

电脑

  繁體 雙語

问题:

从 linux/unix的背景来看,我无法理解UAC在 Windows 中的工作方式。

我听说UAC像 sudo 一样工作。 我的Linux应用程序在调用 sudo 之前可以做一些其他工作。

但是在 Windows 中,在所有实际工作之前,需要UAC确认的所有应用程序都必须授予UAC授权。 我运行一个应用程序,它要求我确认,我拒绝它- 应用程序将不会运行。

UAC是这样工作的?


sudo su


./run_app



而不是:


./do_work1


sudo su


./du_work2



感谢大家的回答 !


回答 1:

将 Windows 作为标准用户登录时,创建登录会话,并指定只包含最基本特权的令牌。 这样,新登录会话就无法更改将影响整个系统的更改。 当作为管理员组中的用户登录时,将分配两个单独的令牌。 第一个令牌包含通常授予管理员的所有特权,第二个令牌是与标准用户将接收的令牌相似的限制令牌。 然后,使用受限令牌启动用户应用程序,包括 Windows shell,这样即使在管理员帐户下,也会降低特权环境。 当应用程序请求更高的特权或者单击"以管理员身份运行"时,UAC将提示确认,并在允许时使用无限制令牌启动进程。

From,最后一句话意味着在应用程序加载之前显示UAC对话框,这样在加载应用程序之前,它就会显示 user token,否则就会产生一个新的进程,然后使用提升的权限来运行它,然后使用提升的权限。 进程启动时分配的令牌决定了它的权限。 标记以后无法更改,因此如果需要更多权限,则需要生成新的进程。

通过这种方式,UAC与并不完全相同。


回答 2:

如果你试图在清单中运行某个可执行文件,并且在文件中嵌入了需要提升的可执行文件,那么UAC提示符将被触发。你还没有运行提升的。 这种行为比wince更像 wince,它是文件,而不是告诉操作系统执行不同凭据的命令。


回答 3:

因为它们是不同的简单而简单的。 UAC 可以像那样实现,但是它并没有。

你可以把它看作是一个网络保护的类比。

sudo 就像一个程序请求网络访问,你的防火墙提示你授予它或者不。 你可以说是,程序将打开插座,或者你可以说否,它会对缺少网络访问( 一些设计拙劣的程序实际上崩溃了) 做出抱怨。 例如:


function1();


input();


function2();


secure_operation();//requests access


function3();//may depend on results of previous operation; error-checking important



UAC更像在尝试打开下载到NTFS卷的文件时得到的警告。 Windows 警告你有关潜在的错误,并询问你是否想要运行( 全部) 或者不是。 它是一个或者无所有操作;你不能选择只信任程序的一部分而不是它的他的。 例如:


if (requires_high_priv(program)) {


 if (request_priv(program))


 program();


}


else {


 program();


}



你必须记住,与更高级别的用户和应用程序不同的是,Windows 设计为用户友好,因这里简化安全性。 这里外,由于它的大量曝光 Surface,它是恶意软件的一个频繁目标,因这里完全信任一个程序。


回答 4:

我没有全面了解Linux架构,所以如果我犯错了,但我理解,我的理解是Linux和 Windows 在这个方面。

例如,将正常文件副本复制到非 protected 位置和试图复制到 protected 位置的文件,然后再次复制。

我的理解是在Linux中,应用程序只是运行并尝试执行操作- 如果它没有执行这里操作的权限。 在上面的例子中,当在Linux中运行复制脚本时,它将复制常规文件。

在这一点上 Windows 完全相同- 运行脚本作为非管理用户将只复制一个,权限发生第二个。 通过UAC它将运行所有三个。

不同之处在于许多 Windows 应用程序只有一个配置集,因这里默认情况下,如果它们没有。"。"。 但是,这将变得更少。



Window  Windows  REF  Request  Continue  UAC