views:

1287

answers:

21

I didn't upgrade to Vista until May or so and one of the things I've always heard developers I know in real life say is "first thing you should do is turn off that UAC crap"

Well, I've left it on this whole time for a few reasons. First, just as a failsafe in case I do something idiotic like have a momentary lapse of reason and run an attachment from an email, or in case I view a site which hits some unpatched exploit. Second, as a big of an experiment to see how good or bad it really is.

Finally, I figure that it enforces some better practices. I used to develop every website in Windows directly in inetpub\wwwroot (Visual Studio .NET 2003 more or less required this) but now I develop them elsewhere because the UAC clickfest is a nightmare. I figure this is Microsoft's way of saying "you should really be doing it this way".

By way of another analogy - if you wrote a web app which runs on XP and 2000 just fine but requires 50 different security features of Server 2003 to be turned off, the real solution might be instead to just fix the application such that it doesn't require the security features to be turned off.

But now I'm having to work with an app which is really really NOT designed to be developed outside of inetpub/wwwroot and so UAC is really a nuisance. It's beyond the scope of the project to rectify this. I want to stick to my guns and leave UAC on but I'm also worried about being so autopilot about clicking "Yes" or "Allow" three times every time I need to modify a file.

Am I just being hard headed? Do most developers on Vista leave the UAC on or off? And for the instance described above, is there a better/easier way?

+5  A: 

No I do not close UAC.

Programming C# winform, and web with IIS. Database is progresql. No need to bother with UAC. Some program only require 1 authorization, not a big deal.

Daok
I do not get how I can be voted down on a poll lol
Daok
+11  A: 

I think it is necessary to leave UAC on on a test machine, so you can see what a real user would see using your app. However, I turn it off on my development machine since I find it distracting, and I trust myself enough to not need it.

(Hopefully your test machine != your dev machine right?)

All this being said, I support UAC, and I am not recommending anyone else turn it off, especially 'common users'.

Geoffrey Chetwood
Well the thing that made me think of this recently was a web app I'm developing. The "testing" is on a QA server. It's a little different I suppose in that I'm not worried about what a customer could do to that machine, versus what they might have running on theirs.
Schnapple
+1  A: 

I leave it on

Darryl Braaten
+1  A: 

I leave it on, but have it set to automatically elevate privileges when necessary. It's a fine distinction, but a distinction nonetheless.

David Hill
+1  A: 

Services like Microsoft SQL Server runs with administrator privileges. Visual Studio on the other hand does not. Nor do most developer-tools.

I make heavy use of virtual machines to 1) make sure my development environment is safe at all times, and 2) to test out software with the potential of leaving my machine FUBAR. And 3) to limit down-time, restoring my development environment, "in case I do something idiotic like have a momentary lapse of reason and run an attachment from an email" :)

roosteronacid
A: 

It's too annoying for me, it gets turned off as soon as I install Vista.

Erikk Ross
+2  A: 

UAC is incredibly annoying at first when you get a new system. The problem is that when you first start out with a new install you have all kinds of programs to set up and settings to tweak. It seems like you see the UAC prompt every 5 minutes.

After a while, two things happen:

  1. You're not setting up as much new stuff.
  2. You've become a little more used to the prompt.

At this point UAC isn't so bad anymore. I have UAC on and I've only seen one or two prompts in the last couple weeks. That's right about perfect: if I see a prompt I wasn't expecting I know to make sure I really want to proceed.

I will argue that the 2nd effect kind of defeats the purpose. What they should do is have UAC disabled by default, but for the first month only. After the first month prompt you to turn UAC on, where the default option for someone who doesn't really read things is to turn it on. Then people aren't annoyed during their setup period, and it's easier to make an informed choice about what you want to do with UAC.

Joel Coehoorn
No one asked what you like or don't like about UAC.
Geoffrey Chetwood
@Joel: I don't read your answer that way at all. It is just a long winded rant about how you would have designed UAC better than MS. It is largely off topic.
Geoffrey Chetwood
I was trying to include information that someone on the other side of the argument may not have fully considered. The last paragraph is a little off-topic, though.
Joel Coehoorn
I use the built-in Administrator account for the initial setup (no elevation required) and revert to a standard account after that.
Zooba
@Zooba: there are reasons not to do that. Some installers work such that the installed program will then require elevation to start. Thus you're back to seeing an excessive number of UAC prompts.
Joel Coehoorn
@Joel: I haven't ever come across that, nor have I read anything suggesting you should write an installer like that.I *have* seen apps that require elevation if you are an administrator, but not if you are a standard user. (Registry Editor is a good example of this.)
Zooba
+1  A: 

I have been using Windows 2008 in my workstation following the advices on http://www.win2008workstation.com/wordpress/ and it has worked great for me. I don't remember turning off UAC, but certainly I haven't suffered it, so I guess it's turned off.

As others have said, you do need to have test [virtual] machines that are configured as close as possible to the ones your users will have so you won't have any surprises deploying your app.

Rodrigo Gómez
A: 

I turn it off as soon as I install the OS. Security by endless modal dialogs is no security at all. Normal users just get used to clicking even more 'OK' buttons after a couple of weeks or so.

EDIT: Wow, down-voted huh? Must be some Microsoft employees around here...Of course it should remain on on a test machine, probably should have mentioned that.

Ed Swangren
Your third sentence almost made it sound as if you were saying "develop your app however you want, people will just have to get used to the security prompts" - which is not what you meant. Also, if security by dialogs isn't security, then what is? For what it's worth, Linux does the same thing.
Schnapple
@schnapple Linux does not do the same thing. It leaves sudo "unlocked" for a period of time after it's last use. Only if you don't use sudo within a certain amount of time will it prompt you for a password.
epochwolf
@epochwolf: this is true. But couldn't it be argued that this is then less secure than Vista?
Schnapple
@Schnapple: Exactly.
TraumaPony
+1  A: 

I think whether you do this or not should depend on the target audience for your application, although I can completely understand people disabling it.

If all your users run Vista with UAC disabled then I think you can get away with turning it off, but this probably isn't realistic--or advisable. At the other end of the spectrum, our applications are used by a vast number of people with every conceivable version and configuration of Windows from Win2k onwards, and obviously including Vista and Server 2008. Since we're an ISV with no control over our users' environments, or over policies governing their privileges and administration, I always leave UAC enabled--even though it annoys me beyond all reason at times--because then I know about any possible problems it might cause for people using our applications sooner rather than later.

Disclaimer: most of my actual coding time is spent on Windows XP, although I have a Vista 64-bit test machine under my desk which I use on a daily basis for testing. Generally I'll use this box around 20 - 30% of the time.

Bart Read
+1  A: 

Developing or not developing - was the first thing I did after installing vista. Just seemed an annoying nuisance at best.

Scott
+1  A: 

Instead of running antivirus to suck away my CPU cycles (I need as many as I can with RDPs and VMs running all the time). I just leave UAC on as a safeguard to double check and make sure only certain things run. It does more than that though, it also restricts programs access to sensitive areas, so a program basically can't trash your system without you allowing it through UAC. I have not had a problem yet and my system runs only what I need it to run, quickly and smoothly.

shogun
i too run no anti virus.
Brian Leahy
A: 

I turn it off on computers that I am using.

When testing, I test in the target environment, which means I may have UAC on or off.

I see no benefit to developing with it on.

bruceatk
I wish when people mark you down they explain why. I believe testing needs to be done with it on and off and I guess I would need someone to explain why that is bad??
bruceatk
A: 

I find it extremely annoying and turn it off at all times, I trust myself enough to not have to have fail safes in place. If I screw up and run some dodgy application that's my bad and I'll live with the consequences. Meanwhile I'm not spending 5 minutes of my day clicking though some damn annoying popups.

Adam Gibbins
+2  A: 

I keep UAC on. I find it useful to develop in an environment similar to my end user. That way if I write any code which is trying to read / write from restricted areas I will know about it quicker.

Mark Ingram
A: 

I have it off, but that's because I trust myself entirely too much. Its funny though, it seems to make the average user (I live in Jourdanton TX, we have a lot of "average users" here in the middle of nowhere) afraid of the control panel, because it causes all these weird prompts to come up and wants their password every 5 minutes if they start to poke around.

That said, I think it depends on your level of expertise with the system. On your dev machine, yes, definitely turn the darn thing off. I haven't gone a day this week without needing to install or update some piece of software, and I don't like having to elevate myself to admin status to have to do that.

What I would really like is the ability to have it elevate for a period of time, or say automatically turn itself back on when I log off, so that I could do an entire session's worth of installing stuff without being bothered, and then be secure again when I was done and (inevitably) had to restart the machine as seems to be common practice with windows installers now.

And all that ranting aside, I think for your test machine, it should definitely be on. Not because I necessarily agree with the feature (any more than I agree that the Administrator account should be disabled permananty, I love that account way too much) but because the User is very likely to have it turned on, and you need to see your program through their eyes. This is especially true if your program is going to require elevation, say to change a setting or modify a certain directory, so that you can prompt your users to accept the UAC warning in your program, which adds an extra layer of comfort to the user I think.

Oh, and as for the one program, let me harp on you just slightly. Shouldn't the program have a define somewhere in the main header files that tells it where its "working directory" is? If this is already the case, then why is it so hard to change that working directory to somewhere else? If its not the case, shame on you, and you should go fix that. ^_^ That would have saved you a lot of trouble.

-Nicholas

Nicholas Flynt
A: 

I'm running into issues where our build scripts do things like manipulate registry entries or add things to the GAC. We're trying to get away from this stuff but until we do it's there and requires privilege escalation. So the build scripts get run from an Administrator command window. The problem comes in when I open Visual Studio 2008 and try to build part of the application - I can't as a normal user because the output files can't be overwritten because the build in the Admin console produced the same files at a higher privilege level. It's causing me a lot of frustration and I'm thinking the best way is to turn UAC off for now but I'm very reluctant to do so.

try running visual studio as admin
Brian Leahy
A: 

Because I've got post-build scripts to copy executables into the Program Files directory for testing I run Visual Studio with elevated privileges.

One tip I've found that makes life easier, is that to quickly start a command prompt with elevated privileges you can:

  1. press Window Key
  2. type "cmd"
  3. Press Ctrl+Shift+Enter
  4. Left cursor key (with right pinky) to move to "Continue" button on UAC dialog
  5. Enter

I always keep one open for launching my IDE and running build scripts.

The only downside I've found is that elevated windows don't interact with some of my window tweaking software like KatMouse and Switcher.

Sam Hasler
A: 

No, but I do change some settings:

  • Do not prompt for elevation if not in the administrators group.
  • Evelvate automatically if you are the [machine]\administrator

I do not put myself in the administrators group. Juts a plain old user, with no elevation prompts.

Use Run As if developing/debugging web apps with development server

Bill
+7  A: 

I code in a standard user account, with UAC turned on.

TraumaPony
A: 

I code with UAC off. I found annoying to see all those popups when i open visual studio or star uml, or just want to change a setting in my machine. I have always installed a good internet security suite that keeped me "virus free" on my machine for long years and i don't see the point to have always an "are you sure" prompt on every task i do. I agree with Ed because everyone click ok.

Exemple : install a firewall to some member of your family. When they will be prompted if app XYZ can connect to the internet, they will click yes. They will not make the distinction between a good app and a spyware/virus. It's the same thing with UAC.

David