Es porque son diferentes, simples y simples. UAC podría haberse implementado como sudo
, pero no fue así.
Puede pensarlo como una analogía con la protección de la red.
sudo
es como cuando un programa solicita acceso a la red y su firewall le solicita que lo otorgue o no. Puede decir que sí y el programa abrirá el socket, o puede decir que no y se quejará de la falta de conexión y hará lo que sea posible sin acceso a la red (algunos programas mal diseñados realmente fallan). Por ejemplo:
function1();
input();
function2();
secure_operation(); //requests access
function3(); //may depend on results of previous operation; error-checking important
UAC es más como la advertencia que se obtiene al intentar abrir un archivo que se descargó a un volumen NTFS. Windows le advierte sobre posibles problemas y le pregunta si desea ejecutarlo (en absoluto) o no. Es una operación de todo o nada; no puede elegir confiar solo en una parte del programa y no en otros. Por ejemplo:
if (requires_high_priv(program)) {
if (request_priv(program))
program();
}
else {
program();
}
Debe recordar que, a diferencia de Linux, que está más orientado a usuarios y aplicaciones avanzados, Windows está diseñado para ser fácil de usar para la mayor variedad de usuarios posible, por lo que simplificar la seguridad es primordial. Además, debido a su gran superficie de exposición, es un objetivo frecuente de malware, por lo que tiene más sentido confiar completamente en un programa o no tenerlo en absoluto.