> This looks to me like MS is doing a self protection thing again - this is
> not about security, it's about MS saying to developers 'you have to do
> what
> we want or we'll make life difficult for you'. How do developers stop this
> happening - do you have to use 'official' MS development tools by chance?
You are incorrect.
The reason you cannot "always" run a program as an administrator is for a
very GOOD reason - and it is to protect the USER, not microsoft.
If you think about it a little bit, you will understand. The purpose of UAC
is to ensure that programs cannot run with admin permissions without user
consent. Allowing a program to ALWAYS run with admin permission without
prompting the user creates a security vulnerability, because Windows does
not know the difference between the USER starting a program and a PROGRAM
starting a program. (This specific issue has been discussed in depth in
other threads - solving this problem is NOT TRIVIAL).
In practice, allowing a USER to always run a program as admin *ALSO* allows
any non-privileged (possibly rogue) program to run PRIVILIGED programs that
the user has approved.
So far, nobody in this forum has came up with a solution that would allow
ONLY the USER to run elevated programs that bypass UAC, but NOT programs.
The closest we have came would be allowing this UAC bypass feature for
programs started from the Start menu / Desktop / Explorer windows only, but
in allowing this behavior there are serious negative security consequences
making this solution impractical.
So, if Windows cannot tell the difference between a user starting a program
and a program starting a program, then ...
If the "always run as admin" behavior was implemented, then a rogue program
would be able to start a program with this attribute set and then trick this
program into performing privileged actions on its behalf.
Imagine the case where a user has set the command prompt to always run as
admin - I'm sure this would be a common scenario, since most users that use
the command prompt probably do so to perform administrative functions. Now,
with this scenario set up, any rogue program would be able to start the
command prompt, which runs with admin privileges without prompting, and say
pass it an argument telling it to format the hard drive. The rogue program
has effectively bypassed UAC by proxy - it is using other programs to
effectively carry out the functions that it is unable to do directly.
If Microsoft were to have enabled this "always run as admin" behavior as you
suggest, they would have shipped Windows Vista with a HUGE security flaw, as
I have described, which, by the time Vista hits store shelves, would have
been exploited by malware authors, and the security afforded by UAC by that
time would pale in comparison to that which it offers now.
--
- JB
Windows Vista Support Faq
http://www.jimmah.com/vista/