views:

1404

answers:

2
+2  Q: 

UAC and Java

Is it possible to ask for elevated permissions from within a Java Application? Suggestions I've seen seem to all be centered around running an external executable or setting up a manifest to request privileges on launch. These aren't available to, for instance, applets. Is there any way to request elevation from a running application?

+2  A: 

Looks like Sun will have to handle that kind of situation in the JRE since there's no other way of doing elevated actions than by running an external process.

If JRE supported it, JVM would probably have to run a separate, elevated process for the java code requesting the elevation.

For now however, only the manifest or running an external application are the only solutions available as far as I know.

The question is, what do you need elevation for?

macbirdie
In the past, we were able to use signed applets to install and load some native code. This is no longer possible on Vista with UAC enabled even though Java's security model ostensibly allows it.
joegester
A: 

UAC is not something that a running process can request (doesn't matter what language you are running in). You have to request elevation at launch time.

The way that most windows apps handle this (and make it look like they are requesting elevation) is to spawn an extra copy of themselves, requesting elevation, and passing sufficient command line arguments to the new process so that the appropriate dialog can be displayed.

This is why UAC elevation in a dialog is always initiated by a button click that opens a new dialog.

So, in the Java world, you just have to do exactly what everyone else has to do: launch your app again, requesting elevation. There are several ways to launch elevated, the 'run as' verb probably being the easiest.

Kevin Day