Це тому, що вони різні, прості і прості. UAC міг би бути реалізований на кшталт sudo
, але це не було.
Ви можете вважати це аналогією із захистом мережі.
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();
}
Ви повинні пам’ятати, що на відміну від Linux, який більше орієнтований на просунутих користувачів та додатків, Windows розроблена таким чином, щоб бути зручним для користувачів якомога ширшого кола користувачів, тому спрощення безпеки є першорядним. Більше того, через велику експозиційну поверхню вона є частою ціллю зловмисного програмного забезпечення, тому має сенс або повністю довіряти програмі, або взагалі не довіряти.