making an app prompt for administrator privilages

Started by
6 comments, last by jbadams 12 years, 3 months ago
Hi. I have just finished my application using VC++ on Windows. I used innoSetup to make an installer and installed it - until now, everything works fine.

However, the program needs to create a file, and because the program is started without administrator privilages, the system won't let me. This is fixed when I manually run the program as an administrator. What I would like is, before my application starts, to prompt the user to grant administrator privilages so I can open files freely.

Is there a way to do that? (it needs to be done from code if possible)
Advertisement
You could always work around the issue by creating the files in the user/appdata/ folder.
"What? It disintegrated. By definition, it cannot be fixed." - Gru - Dispicable me

"Dude, the world is only limited by your imagination" - Me

In general, it's bad practice to require admin priviliges, unless your app is for some kind of system configuration.

If this is the case, you can do it in the manifest: http://msdn.microsoft.com/en-us/library/bb756929.aspx
I think that if your app requires admin privileges to be installed, then it is 'correct' that an admin account is needed. Either your app does not require admin privileges (so change the installer) or accept that the user must log in as an admin.

That's only my opinion though :-)

You could always work around the issue by creating the files in the user/appdata/ folder.

I wouldn't really call this a work-around -- putting your files in userdata or appdata is the recommended practice for the platform in question (i.e. Windows), so rather than being a work-around this is really How Your Program Should Work[color=#000000][font=sans-serif]

™.[/font]

- Jason Astle-Adams


I think that if your app requires admin privileges to be installed, then it is 'correct' that an admin account is needed. Either your app does not require admin privileges (so change the installer) or accept that the user must log in as an admin.

That's only my opinion though :-)


Running an application under an administrator account doesn't automatically impart administrator privileges to the application. And pretty much every installer needs administrator privileges to install an application in order to write to Program Files and to the registry and so on.

Agree with all the above - unless you have a very good reason to need to write files in restricted areas, use the app data etc directories. This has been best practice for quite a while now.

[quote name='cignox1' timestamp='1325774991' post='4899948']
I think that if your app requires admin privileges to be installed, then it is 'correct' that an admin account is needed. Either your app does not require admin privileges (so change the installer) or accept that the user must log in as an admin.

That's only my opinion though :-)


Running an application under an administrator account doesn't automatically impart administrator privileges to the application. And pretty much every installer needs administrator privileges to install an application in order to write to Program Files and to the registry and so on.

Agree with all the above - unless you have a very good reason to need to write files in restricted areas, use the app data etc directories. This has been best practice for quite a while now.
[/quote]

Thank you - I forgot about the AppData directory :) Is there a way to access it without specifying the full path though?

I forgot about the AppData directory Is there a way to access it without specifying the full path though?

Absolutely -- and again, using the full path would actually be bad practice -- take a look at the SHGetKnownFolderPath function (or for older versions of Windows, SHGetFolderPath). You don't want to hard-code the full path because the folder might occasionally be in a different place, as well as to make your software more future proof by not relying on an implementation detail that may be changed in future versions of Windows.

Hope that helps! cool.png

- Jason Astle-Adams

This topic is closed to new replies.

Advertisement